使用Android Studio中的另一个模块的源代码进行编译

时间:2013-11-22 21:20:43

标签: android intellij-idea android-studio

在Android Studio中我有一个Android项目,其中包含一个名为go的模块,其中Gradle是一个Android库。它包含一个名为com.nwoods.go的Java包。为了这个Stack Overflow提交,它包含一个名为FooBar的类

在同一个Android项目中,我有一个名为ugurdemo1的应用程序模块,它在程序包com.nwoods.ugurdemo1中有一个MainActivity类。

Android Studio我已经修改了模块ugurdemo1的项目结构,以便在编译时依赖库go。在ugurdemo1的MainActivity中,我想引用并使用FooBar中的课程go。为此,我使用典型的Java import语句为该类开头:

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

在对源进行干净重建后,Android Studio仍然无法解析FooBar的符号。 Stack Overflow上的类似问题通过编辑“依赖关系”对话框中的编译时设置来解决,但是再次无效。如果有任何帮助,我目前正在运行Android Studio IO Preview (0.3.6)

2 个答案:

答案 0 :(得分:8)

听起来你做得对,但要确认一下,这是一个Project Structure依赖项面板的截图,它允许你在Gradle中设置模块依赖:

Screenshot of Android Studio Project Structure dialog

此模块已经依赖于通过Maven样式导入检索的两个库,并且它还作为Foo模块的依赖项。要添加新的依赖项,请单击底部的+按钮并选择依赖项类型(如图所示)。

您也可以手动编辑Gradle构建文件。在我的示例中,“two”模块的目录中有一个build.gradle文件。它有一个dependencies块,如下所示:

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

您可以添加更多compile project行来添加新模块依赖项;使用冒号分隔的语法来提供模块相对于项目根目录的位置。

如果您手动编辑build.gradle文件,当您完成Android Studio重新读取文件并获取更改时,请单击工具栏中的“使用Gradle文件同步项目”按钮。

答案 1 :(得分:2)

问题可能不是您的项目,而是Android Studio本身的错误,在此处进行跟踪:https://code.google.com/p/android/issues/detail?id=65915

“修复”是从除根项目目录之外的所有模块中删除settings.gradle。

例如,在我的情况下,我的项目结构如下所示:

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

删除后,结构如下所示:

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

干杯