我有一个构建配置,包含2种构建类型(调试/发布)和2个flavorGroups(区域设置/环境)。
这是3个不同的轴,我想确定所有构建变体的packageName。
但是,似乎我只能为给定的flavor设置完整的packageName,然后为构建类型设置packageNameSuffix - 尝试为flavor调用packageNameSuffix会导致Could not find method packageNameSuffix() for arguments [...]
错误。
任何方式,以便我可以获得每个生成的构建变体的包名称,方法是:com.app.LOCALE.ENVIRONMENT.TYPE
,而不必将其中一个轴“展开”为构建类型(会导致重复吗?
提前致谢。
答案 0 :(得分:1)
您可以使用我在此处撰写的解决方案:https://stackoverflow.com/a/26585241/4177090
简而言之,您可以使用variantFilter查找组合变体,然后从那里更新配置(例如appliciationId):
android.variantFilter { variant ->
def flavorString = ""
def flavors = variant.getFlavors()
for (int i = 0; i < flavors.size(); i++) {
flavorString += flavors[i].name;
}
if(flavorString.equalsIgnoreCase("fooBar")) {
variant.getDefaultConfig().applicationId "com.example.foobar"
}
}
答案 1 :(得分:0)
您可以使用productFlavors和buildTypes的packageName和packageNameSuffix的组合,如下所示:
android {
productFlavors {
foo {
packageName "com.example.foo"
versionName "Foo"
}
bar {
packageName "com.example.bar"
versionName "Bar"
}
}
buildTypes {
debug {
packageNameSuffix ".debug"
versionNameSuffix "-debug"
}
release {
packageNameSuffix ".release"
versionNameSuffix "-release"
}
}
}
但是如果你使用的是类似flavorGroups的东西,那么这可能不适合你。 您还可以查看此代码示例配置,该配置添加了新的buildType https://github.com/bradmcmanus/Gradle-Build-Example/blob/master/GradleBuildExample/build.gradle