deadboy
deadboy

Reputation: 859

Compiling with the source of another module in Android Studio

In Android Studio I have an Android project which contains an module called go setup with Gradle to be an Android library. It contains a single Java package called com.nwoods.go. For the sake of this Stack Overflow submission, it contains a class called FooBar

Inside the same Android project, I have an application module called ugurdemo1 which has a MainActivity class in the package com.nwoods.ugurdemo1.

Android Studio I have modified the project structure for the module ugurdemo1 to depend on the library go at compile time. In ugurdemo1's MainActivity, I'd like to reference and use the class FooBar from go. To do this, I prefaced the class with a typical Java import statement:

   import com.nwoods.go.FooBar;
   ... 
   @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        FooBar myFooBarObject = null; 

Android Studio still can not resolve the symbol for FooBar after doing a clean rebuild of my sources. Similar questions on Stack Overflow were resolved by editing the compile time settings in the Dependency dialog but again that does not work. If it is of any help, I am currently running Android Studio IO Preview (0.3.6)

Upvotes: 5

Views: 14486

Answers (2)

jonalmeida
jonalmeida

Reputation: 1236

The problem may not be your project but a bug in Android Studio itself that's being tracked here: https://code.google.com/p/android/issues/detail?id=65915

The "fix" is to delete the settings.gradle from all modules except the root project directory.

For example, in my situation, my project structure looks like this:

build.gradle
settings.gradle
library_module:
   build.gradle
   settings.gradle
      library:
         build.gradle
         settings.gradle
android_app:
   settings.gradle
   build.gradle

After deleting, the structure looked like this:

build.gradle
settings.gradle
library_module:
   build.gradle
      library:
         build.gradle
android_app:
   build.gradle

Cheers

Upvotes: 2

Scott Barta
Scott Barta

Reputation: 80010

It sounds like you've done the right thing, but to confirm, here's a screenshot of a Project Structure dependencies panel that lets you set module dependencies in Gradle:

Screenshot of Android Studio Project Structure dialog

This module already has dependencies on two libraries retrieved via Maven-style imports, and it also as a dependency on the Foo module. To add a new dependency, you click on the + button at the bottom and choose a dependency type (shown).

You can also edit your Gradle build files by hand. In my example, there's a build.gradle file in the "two" module's directory. It has a dependencies block that looks like this:

dependencies {
    compile 'com.android.support:support-v4:+'
    compile 'com.android.support:appcompat-v7:+'
    compile project(':Foo')
}

You can add further compile project lines to add new module dependencies; use a colon-delimited syntax to provide the position of the module relative to the project's root directory.

If you edit the build.gradle file by hand, click on the "Sync Project with Gradle Files" button in the toolbar when you're done to make Android Studio re-read the file and pick up your changes.

Upvotes: 8

Related Questions