android - 具有 flavor 的ext变量不适用于多维

标签 android gradle android-productflavors

我与下面的代码具有相同的结构,我想在applicationId和后缀中添加前缀(不带点),并在gradle文件的最后使用applicationId值。

我不想使用applicationIdSuffix,因为它会自动添加点,并且在整个gradle中都无法获得完整的applicationId。

flavorDimensions "type", "version"

productFlavors.all {
       ext.appIdPrefix = "com.example"
       ext.appId = ""
       ext.appIdSuffix = ""
    }

productFlavors {

        flavor1 {
            dimension "type"
            appId = ".flavor1"
        }

       full {
            dimension "version"
            appIdSuffix = "Full"
        }
}

productFlavors.all  {
     applicationId appIdPrefix + appId + appIdSuffix
}


现在,当我使用“flavor1full”运行我的应用程序时,applicationId仅是“com.exmaple.flavor1”,而没有获得appIdSuffix的值

我该如何解决?

最佳答案

无需更改每种口味的应用程序ID,而是尝试遍历applicationVariants:

applicationVariants.all { variant ->
    def flavors = variant.productFlavors
    variant.mergedFlavor.applicationId = flavors[0].appId + flavors[1].appIdSuffix ;
}

由于两种构建类型,这将对每种口味的组合进行两次迭代。另请参阅Multi-Dimension Flavor ApplicationId

还要注意您的问题中的错字:appIdSuffix "Full"应该是appIdSuffix="Full"

关于android - 具有 flavor 的ext变量不适用于多维,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54786444/

相关文章:

android - 如何查看ACTION_SEND intent是否启动?

java - 如果 JSON 数组为空,则更改文本

android - 用于通过git标签自动执行Android版本控制的Gradle脚本

来自动态创建的适配器 ListView 的Android getText

java - 错误: Cannot fit requested classes in a single dex file (# methods: 67451 > 65536)

maven - 具有排除项的依赖项列表的正确 Gradle 语法是什么?

java - UnknownHostException错误,构建java grpc示例

android - 如何从主目录访问产品 flavor 类?

android - 更改 Android 项目中每种风格的启动器图标和名称

android - 编写gradle任务以添加新的Android产品版本的规范方法