我有一个不会在Android Studio中构建的Android项目(在Eclipse中构建得很好)。 问题在于库模块。项目设置如下: 应用项目(依赖于所有其他模数) 库模块A(域层,具有数据库业务对象等) 库模块B(依赖于模块A,包含与B相关的视图工作流) 库模块C(对模块A的依赖,包含与C有关的视图和工作流程)
如上所述,这在Eclipse中运行良好(可能是因为不同的构建系统 - 而不是Gradle)
当转移到Android Studio(最新版本1.1.0)时,我逐渐将模块移到App上,然后是A,然后是B,然后运行,一切都运行良好。添加了C,但是gradle构建不起作用,因为模块C无法使模块B的R文件更好(我有一些共享通用布局)。 但是,IDE完全没有问题。这让我怀疑这是Gradle构建脚本的问题,可能没有移动模块B R-File可以找到它。 gradle构建错误是: 错误:包moduleA.R不存在 仅在构建moduleC
时才会出现此错误Gradle的App dependencies部分:
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:appcompat-v7:21.0.3'
compile project(':moduleA')
compile project(':moduleB')
compile project(':moduleC')
}
模块C的依赖关系:
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:appcompat-v7:21.0.3'
provided project(':moduleA')
}
Setting.gradle :(:daogenerator仅适用于greeendao的东西)
include ':app', ':moduleA', ':daogenerator', ':moduleB, ':moduleC'
我注意到的一件事是在app.iml文件中,orderEnty看起来是关闭的,但是这是由IDE生成的,所以任何编辑都被覆盖了:
<orderEntry type="jdk" jdkName="Android API 21 Platform" jdkType="Android SDK" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" exported="" name="appcompat-v7-21.0.3" level="project" />
<orderEntry type="library" exported="" name="opencsv-2.0" level="project" />
<orderEntry type="library" exported="" name="greendao-1.3.7" level="project" />
<orderEntry type="library" exported="" name="support-v4-21.0.3" level="project" />
<orderEntry type="library" exported="" name="support-annotations-21.0.3" level="project" />
<orderEntry type="module" module-name="moduleC" exported="" />
<orderEntry type="module" module-name="moduleA" exported="" />
<orderEntry type="module" module-name="moduleB" exported="" />
不知怎的,我希望ModuleC的orderEntry在ModuleA之后;但是,我不知道如何指定。
以下是错误发生之前的一些Gradle调试语句:
08:34:42.738 [DEBUG][org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter] Determining if task ':moduleC:compileDebugJava' is up-to-date
08:34:43.007 [INFO] [org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter] Executing task ':moduleC:compileDebugJava' (up-to-date check took 0.269 secs) due to:
Output file C:\Dev\Fieldbook\build\intermediates\classes\debug\moduelC\BuildConfig.class has been removed.
Output file C:\Dev\Fieldbook\build\intermediates\classes\debug\moduleC\R$attr.class has been removed.
Output file C:\Dev\Fieldbook\build\intermediates\classes\debug\moduleC\R$styleable.class has been removed.
08:34:43.009 [DEBUG]org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter] Executing actions for task ':moduleC:compileDebugJava'.
我没有尝试在Android Studio之外构建,可能会在我有空的时候尝试。与此同时,我只是暂停端口并继续在Eclipse中开发