带有适用于 Android 的口味的 Gradle applicationId

Posted

技术标签:

【中文标题】带有适用于 Android 的口味的 Gradle applicationId【英文标题】:Gradle applicationId with flavors for Android 【发布时间】:2021-03-12 15:35:15 【问题描述】:

我想将我的应用程序上传到 Google Play 商店,但在它上线之前我想对其进行测试。应用程序中有一个测试模式,我希望生产 applicationId 像

com.company.product

但我也想有 2 种口味来进行测试,比如

com.company.product.alpha
&&
com.company.product.beta

我的应用 build.gradle 应该是什么样的?

android 
    compileSdkVersion 30
    defaultConfig 
        applicationId "com.company"
        minSdkVersion 21
        targetSdkVersion 30
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
  
        ....

flavorDimensions "version"
    productFlavors 
        product 
            dimension "version"
            applicationIdSuffix ".product"
            versionCode 1
            versionName "1.0"
        

        alpha 
            dimension "version"
            applicationIdSuffix ".product.alpha"
            versionCode 1
            versionName "1.0"
        
     
        beta 
            dimension "version"
            applicationIdSuffix ".product.beta"
            versionCode 1
            versionName "1.0"
        
    


.....或者我想像这样??

android 
    compileSdkVersion 30
    defaultConfig 
        applicationId "com.company.product"
        minSdkVersion 21
        targetSdkVersion 30
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
  
        ....

flavorDimensions "version"
    productFlavors 

        alpha 
            dimension "version"
            applicationIdSuffix ".alpha"
            versionCode 1
            versionName "1.0"
        
     
        beta 
            dimension "version"
            applicationIdSuffix ".beta"
            versionCode 1
            versionName "1.0"
        
    


【问题讨论】:

【参考方案1】:

你可以这样做:

android 
compileSdkVersion 30
buildToolsVersion "30.0.2"
defaultConfig 
    applicationId "com.company.product"
    minSdkVersion 21
    targetSdkVersion 30
    flavorDimensions "application"
    versionCode 1
    versionName "1.0.0"
    testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"


productFlavors 
    alpha 
        dimension "application"
        applicationIdSuffix ".alpha"
        versionNameSuffix "-alpha"
        buildConfigField "String", "FLAVOR_TYPE", '"alpha"'
    
    beta 
        dimension "application"
        applicationIdSuffix ".beta"
        versionNameSuffix "-beta"
        buildConfigField "String", "FLAVOR_TYPE", '"beta"'
    
    production 
        dimension "application"
        applicationIdSuffix ""
        versionNameSuffix ""
        buildConfigField "String", "FLAVOR_TYPE", '"production"'
    

为每种口味设置applicationIdSuffixversionNameSuffix,并为生产一种留空。通过这种方式,您可以分发 com.company.product.alphacom.company.product.beta 以获得 alpha 和 beta 版本。

【讨论】:

以上是关于带有适用于 Android 的口味的 Gradle applicationId的主要内容,如果未能解决你的问题,请参考以下文章

没有方法签名: .android() 适用于参数类型。 build.gradle(应用程序)中的异常

根据风味文件夹内容有条件地应用 gradle 插件

适用于 Android 的多模块项目的 SonarQube

如何在适用于 Android 的 Google API 的 CameraSource 中保存带有叠加层的图像?

Android风味,Gradle sourceSets合并

使用 c# .net 发送带有图像的 GCM 推送通知(适用于 android 应用程序)