如何在某些生成的资源值中包含`applicationIdSuffix`?

时间:2016-03-29 08:37:53

标签: android android-gradle

想象一下这个设置:

android  {
   buildTypes {
        debug {
            applicationIdSuffix ".debug"
        }
   }
   productFlavors {
       foo {
           applicationId defaultConfig.applicationId + '.foo'
       }
   }

}

如何设置动态字符串值,例如

resValue "string", "package_name", applicationId

以便它包含用于调试版本的applicationIdSuffix

如果我将其添加到defaultConfig,则设置我的defaultConfig的applicationId。如果我将其添加到flavor配置中,则会遗漏applicationIdSuffix(此级别为null)。

任何提示?

1 个答案:

答案 0 :(得分:2)

关于applicationIdSuffix的一个很酷的部分是你可以在版本和构建类型中使用它。看看这个:

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    defaultConfig {
        applicationId "dev.bmax.suffixtext"
        minSdkVersion 14
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
            applicationIdSuffix '.debug'
        }
    }

    productFlavors {
        prod {
            applicationIdSuffix '.prod'
        }
        mock {
            applicationIdSuffix '.mock'
        }
    }
}

现在,当我构建我的'prodDebug'变体时,最终的应用程序ID是'dev.bmax.suffixtext.prod.debug',如果我正确理解你的问题,这就是你想要的。

修改

  1. 您可以在Gradle任务中访问变体的名称,如下所示:

    applicationVariants.all { variant ->
        // Use 'variant.name'
    }
    
  2. Gradle Android插件版本0.14.3增加了对特定版本BuildConfigField / resValue的支持:

    applicationVariants.all { variant ->
        variant.resValue "string", "name", "value"
    }