摇篮:android.variantFilter原因版本升级后无法摇篮2.2.1 [英] Gradle: android.variantFilter cause build fail after upgrade to Gradle 2.2.1
问题描述
我在那里有很多口味的Android项目的工作,我在的build.gradle
用这个code设置每个风味包名称:
I am working in an Android project which has many flavors, I used this code in build.gradle
to set the package name for each flavor:
flavorDimensions "type", "feature"
productFlavors {
abc { flavorDimension "type" }
def { flavorDimension "type" }
ABC { flavorDimension "feature" }
DEF { flavorDimension "feature" }
}
android.variantFilter { variant ->
def flavorString = ""
def flavors = variant.getFlavors()
for (int i = 0; i < flavors.size(); i++) {
flavorString += flavors[i].name;
}
if(flavorString.equalsIgnoreCase("abcABC")) {
variant.getDefaultConfig().applicationId "com.my.app.abc.abc"
}
if(flavorString.equalsIgnoreCase("abcDEF")) {
variant.getDefaultConfig().applicationId "com.my.app.abc.def"
}
if(flavorString.equalsIgnoreCase("defABC")) {
variant.getDefaultConfig().applicationId "com.my.app.def.abc"
}
if(flavorString.equalsIgnoreCase("defDEF")) {
variant.getDefaultConfig().applicationId "com.my.app.def.def"
}
}
一切都很好,直到我更新了我从的gradle 1.10.0 2.2.1,构建失败,我得到这个错误信息:
Everything was fine until I updated my gradle from 1.10.0 to 2.2.1, the build is failed and I get this error message:
Error:(63, 0) No signature of method: com.android.build.gradle.internal.api.ReadOnlyProductFlavor.applicationId() is applicable for argument types: (java.lang.String) values: [com.hac.apps.megahd.acc]
Possible solutions: getApplicationId()
这似乎是 variant.getDefaultConfig()的applicationID
现在的工作不同。我搜索文档的网络为 android.variantFilter
,但它似乎并没有被存在了。
It seems like the variant.getDefaultConfig().applicationId
is working different now. I searched the internet for the document for android.variantFilter
but it seems not to be exist.
任何人都可以告诉我,我如何才能在2.2.1的gradle这code的工作?非常感谢。
Anyone can tell me how do I get this code work in gradle 2.2.1? Thanks a lot.
推荐答案
该variantFilter旨在只能用来允许或禁止某些构建组合。该defaultConfig对象是共享的,只读的。如果要分配的applicationID对变种,我想你应该更类似于这样:
The variantFilter is meant to be used only to allow or disallow builds of certain combinations. The defaultConfig object is shared and read-only. If you want to assign applicationId's to variants, I think you should something more similar to this:
buildTypes {
applicationVariants.all { variant ->
def projectFlavorNames = []
variant.productFlavors.each() { flavor ->
projectFlavorNames.add(flavor.name)
}
project.logger.debug('Application variant ' + variant.name + '. Flavor names list: ' + projectFlavorNames)
if (projectFlavorNames.contains('customer1') && projectFlavorNames.contains('variant1')) {
variant.mergedFlavor.applicationId = 'com.customer1.variant1'
} else if (projectFlavorNames.contains('customer2') && projectFlavorNames.contains('variant2')) {
variant.mergedFlavor.applicationId = 'com.customer2.variant2'
} // else use standard package name
project.logger.debug('Using project name: ' + variant.packageName)
}
// ...
}
从<一个href=\"http://stackoverflow.com/questions/24303522/dynamically-generate-package-name-for-multi-flavors-configuration\">Dynamically生成的多口味的配置包名
这篇关于摇篮:android.variantFilter原因版本升级后无法摇篮2.2.1的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!