首页 > 解决方案 > 覆盖风味和构建类型之外的应用程序 ID

问题描述

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

在构建类型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','')

标签: androidgradle

解决方案


是否可以根据风格覆盖变体应用程序 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 ""
        }
    }
}

更多详细信息,请参阅官方文档


推荐阅读