在Flavors和Build类型之外覆盖应用程序ID

时间:2018-04-25 10:28:24

标签: android gradle

我的应用程序有很多种类(A,B,C)和两种构建类型(debugrelease

在构建类型debug中,我为应用程序ID添加了一个后缀,如下所示:

debug {
    applicationIdSuffix '.debug'
}

这适用于各种口味AB,但我无法将.debug添加到C的应用ID中。

我已经看过这个变种,就像我对versionCode一样,但没有运气。

    applicationVariants.all { variant ->
        def changedVersionCode = variant.versionCode
        variant.
        variant.outputs.each { output ->
            if (variant.buildType.name != "debug") {
                output.setVersionCodeOverride(project.ext.versionCode)
                changedVersionCode = project.ext.versionCode
            } 
        }
        changeApkFileName(variant,changedVersionCode)
    }

是否可以根据风格覆盖变体应用程序ID。例如,我的计划是做这样的事情:

variant.buildType.name.replace('.debug','')

1 个答案:

答案 0 :(得分:4)

  

是否可以根据风格覆盖变体应用程序ID

是的,这是可能的。

您无法看到预期ID的原因是:

  

由于Gradle在产品flavor之后应用构建类型配置,因此“C”构建变体的应用程序ID将为“<your-applicaion-id>.debug”。

因此,如果您希望它针对不同的风格有所不同,那么您必须将applicationIdSuffix与不同的风格分开,并将其从debug {}中删除,如下所示:

android {
    defaultConfig {
        applicationId "<your-application-id>"
    }
    productFlavors {
        A {
            applicationIdSuffix ".debug"
        }
        B {
            applicationIdSuffix ".debug"
        }
        C {
            applicationIdSuffix ""
        }
    }
}

有关详细信息,请参阅官方documentation