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

Stu*_*ing 5 android gradle

我有一个具有许多flavor(A,B,C)和两种构建类型(debug,release)的应用程序

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

debug {
    applicationIdSuffix '.debug'
}
Run Code Online (Sandbox Code Playgroud)

这对于口味很好A,B但我不能附加.debug到flavor 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)
    }
Run Code Online (Sandbox Code Playgroud)

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

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

Sag*_*gar 5

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

对的,这是可能的。

您看不到预期 id 的原因是:

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

因此,如果您希望不同口味的产品不同,那么您必须将applicationIdSuffix不同口味的产品分开并将其从debug {}以下位置中删除:

android {
    defaultConfig {
        applicationId "<your-application-id>"
    }
    productFlavors {
        A {
            applicationIdSuffix ".debug"
        }
        B {
            applicationIdSuffix ".debug"
        }
        C {
            applicationIdSuffix ""
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

更多详情请参考官方文档