我有两种产品口味,像testApplicationId这样设置build.gradle:

defaultConfig {
    minSdkVersion 8
    targetSdkVersion 19
    testApplicationId 'com.example.testapp'
}

是否可以在每个testApplicationId中覆盖此productFlavor

我尝试在各个testApplicationId中覆盖productFlavors本身,但随后未生成R.class文件,并且出现编译错误。

我读到有关packageName/applicationId不会影响R.class文件的信息,但是我不确定该规则是否也适用于testApplicationId

最佳答案

我确认这可以在Android Gradle插件版本2.3.0中按预期工作

defaultConfig {
    ...
    testApplicationId 'default'
}

productFlavors {
    first {
        testApplicationId 'first'
    }
    second {
        testApplicationId 'second'
    }
}

android.applicationVariants.all { variant ->
    variant.productFlavors.each {
        def buildType = variant.buildType.name.capitalize()
        println "$it.name$buildType $it.testApplicationId"
    }
}

提供以下输出:
firstDebug first
firstRelease first
secondDebug second
secondRelease second

10-01 03:14