我在Android Studio中创建了多模块项目。它有3个应用程序模块和5个库模块。
我想在库模块之一的常量变量DB_VERSION_CODE
。该值应根据当前运行的应用程序模块更新。目录结构是
|-> apps
| -> Application 1
| - build.gradle
| -> Application 2
| - build.gradle
| -> Application 3
| - build.gradle
|
|-> modules
| -> Lib Module 1
| - build.gradle
| -> Lib Module 2
| - build.gradle
| -> Lib Module 3
| - build.gradle
| -> Lib Module 4
| - build.gradle
|
| - build.gradle (global)
| - versions.gradle (global)
在全局build.gradle文件中,我正在导入versions. gradle。
版本.gradle:
ext {
dbVersionCode = -1 //OVERRIDE IN APP GRADLE
}
在应用程序模块的gradle文件中,我正在尝试更新它。
应用1 - build.gradle
android {
....
defaultConfig {
//Updating Configuration
rootProject.ext.dbVersionCode = 2001
....
}
....
}
应用2 - build.gradle
android {
....
defaultConfig {
//Updating Configuration
rootProject.ext.dbVersionCode = 2002
....
}
....
}
现在,我正尝试在其中一个库模块中使用相同的字段,如下所示
库模块2 - build.gradle
android {
....
defaultConfig {
//Updating Configuration
buildConfigField 'int', 'DB_VERSION_CODE', "${rootProject.ext.dbVersionCode}"
....
}
....
}
问题是:
当我尝试运行Application 2
时,这工作正常,但当我运行Application 1时,BuildConfig中的值2001没有更新。
- 想着:*
Gradle是简单的考虑最后一个项目的所有时间。这是工作只有当我评论其他应用程序模块在settings.gradle
。
请建议我任何其他方法来实现相同的或解决方案,如果我错过了任何小。
先谢了。
1条答案
按热度按时间2guxujil1#
我终于找到了问题的答案。
问题是,当我尝试在应用程序上运行所有模块时,Gradle脚本正在运行,因为该值在最后一个应用程序模块中被覆盖。因此该值始终相同。
这可以通过使用需要在
gradle.properties
中提及的标志来避免这样,只有选定的模块及其依赖模块的脚本才会被执行。