android - 如何使用 gradle Android 插件将特定包后缀(或包名称)添加到 Build Variant

标签 android android-gradle-plugin

是否可以将特定的包名称(applicationId)设置为 Build Variant? ( flavor + 构建类型)

例如,我想将“.beta”添加到可能是“flavor7Beta”但不是其他类型的“flavor7”或其他类型的“Beta”类型的变体的包名称中。

我试过了

beta {
            ...
            applicationVariants.all { variant ->
                println "variant: ${variant.name}"
                if(variant.name == "flavor7Beta") {
                    variant.applicationId = "com.domain.myapp.beta"
                }
            }
        }

但是我得到了

错误:(172, 0) 无法在 com.android.build.gradle.internal.api.ApplicationVariantImpl_Decorated@3cdafe1e 上设置只读属性“applicationId”的值。

最佳答案

你应该使用反射。

android.variantFilter { variant -> 
    def config = variant.getDefaultConfig();
    def field = config.getClass().getDeclaredField('productFlavor');
    field.setAccessible(true);
    field.get(config).applicationId "com.example"
}

关于android - 如何使用 gradle Android 插件将特定包后缀(或包名称)添加到 Build Variant,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27109914/

相关文章:

Android 屏幕截图 - 如何?

gradle - 每个操作系统的gradle中的条件builddir

android - 错误 :Could not find com. android.tools.build :gradle:3. 0.0-beta2

android - 一个Android Studio项目,用于部署多个应用

android - 将android studio更新到3.0后任务执行失败

c# - 如何将数据库表中的数据添加到 ListView C# Xamarin Android App

java - 如何使用模型实现简单的 REST 和 ContentProvider 架构?

android - onTouchEvent 从未调用过 MapActivity

java - 如何启用 RecyclerView 中的下一项?

android - 在复杂场景中需要管理构建风格和构建类型方面的帮助