我有一套使用相同模块的项目,其中包含几乎所有实际代码。该项目设置如下:
project/
- app/
- build.gradle
- libraries/
- module/
- build.gradle
- build.gradle
- settings.gradle
依赖关系都设置正确,我可以很好地构建和运行应用程序,但是我只能为项目添加风味,这不是理想的解决方案。 settings.gradle 包含以下内容:
include ':app', ':libraries:module'
在app目录的 build.gradle 文件中,我添加了以下块:
productFlavors {
alpha
production
}
使用gradle 0.11,这将同步并创建 assembleAlphaDebug , assembleAlphaRelease , assembleProductionDebug , assembleProductionRelease 任务。当我尝试在模块中执行此操作时,我收到错误:
找不到与给定名称匹配的资源(在'主题'有价值' @ style / MyCustomTheme')
在构建的app/src/main/AndroidManifest.xml
中。由于某种原因,该模块尚未构建,因此自定义主题无效。我做错了什么?
答案 0 :(得分:67)
在库模块的build.gradle中,如果在另一个模块中包含时没有指定,则需要一些额外的行来告诉它导出flavor和默认使用的构建变体:
android {
defaultPublishConfig "productionRelease"
publishNonDefault true
productFlavors {
alpha {
}
production {
}
}
}
只有当某人想要依赖publishNonDefault
变体以外的其他内容时才需要productionRelease
位。如果您首先在库中设置多种口味,可能就是这种情况。
现在,如果您通过build.gradle中的另一个模块添加依赖项:
dependencies {
compile project(':module')
}
默认情况下,它取决于productionRelease
变体。如果您想依赖非默认变体:
dependencies {
compile project(path: ':module', configuration:'alphaDebug')
}