如何使用flavorDimensions为每种风味组合设置不同的applicationId?

问题描述 投票:22回答:3

我有一个旧的android应用,正在尝试迁移到android gradle构建系统。该应用程序当前以多项目设置构建,并作为四个不同的应用程序发布(包括两个不同的数据集以及两个数据集的免费/付费版本)。我已经设法通过使用flavorDimensions(以前称为flavorGroups)来摆脱多项目设置,但是我不知道如何为每种风味组合设置不同的applicationId。

由于该应用程序的版本已经发布,所以我需要保持与当前应用程序相同的applicationid。由于我原来的程序包命名是如何完成的,所以我不能简单地将flavor-buildtype组合与“ packageNameSuffix”一起使用(如果它是未发布的应用程序,那将是一个不错的选择)。

[https://stackoverflow.com/a/20956353/4177090正在回答如何将不同的源文件夹用于风味组合,但不能(如果可能的话)如何为构建文件中的每个组合设置特定的配置。

Gradle构建文件摘要:

flavorDimensions "price", "dataset"

productFlavors {
    free { flavorDimension "price" }
    paid { flavorDimension "price" }
    dataset1 { flavorDimension "dataset" }
    dataset2 { flavorDimension "dataset" }
}

我想在我的gradle构建文件中添加以下内容(注意我的命名有多不合理,这就是为什么我不能使用packageNameSuffix的原因:]]

freeDataset1 { applicationId "com.beansys.freeappdataset1" }
freeDataset2 { applicationId "com.beansys.freedataset2" }
paidDataset1 { applicationId "com.beansys.dataset1paid" }
paidDataset2 { applicationId "com.beansys.mypaiddataset2" }

我有一个旧的android应用,正在尝试迁移到android gradle构建系统。该应用程序当前以多项目设置构建,并作为四个不同的应用程序发布(两个不同的数据...

android gradle android-gradle-plugin android-build
3个回答
26
投票

Fredrik提出的解决方案在将Android Studio升级到1.0.2(并将gradle插件升级到1.0.0)后停止工作,因此我不得不添加以下更改,当前版本自gradle插件1.3.1开始:


7
投票

我终于设法解决了这个问题。我认为解决方案很优雅(尽管实际的代码很可能由具有过硬知识的人编写的更好。)


0
投票

我在转换给gradle kotlin dsl的答案时遇到问题。我找到了一个解决方案,并在这里共享了它:https://stackoverflow.com/a/60103604/2793394

© www.soinside.com 2019 - 2024. All rights reserved.