相关疑难解决方法(0)

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

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

由于应用程序版本已经发布,我需要保留与当前版本相同的应用程序.由于我的原始包命名是如何完成的,我不能简单地使用flavor-buildtype与"packageNameSuffix"的组合(如果它是一个未发布的应用程序,那将是一个很好的选择).

/sf/answers/1466944741/正在回答如何使用不同的源文件夹进行风味组合,而不是如何(如果可能的话)为构建文件中的每个组合设置特定配置.

Gradle构建文件片段:

flavorDimensions "price", "dataset"

productFlavors {
    free { flavorDimension "price" }
    paid { flavorDimension "price" }
    dataset1 { flavorDimension "dataset" }
    dataset2 { flavorDimension "dataset" }
}
Run Code Online (Sandbox Code Playgroud)

我想在我的gradle构建文件中有类似下面的内容(请注意我的命名是如何unlogic的,这就是为什么我不能使用packageNameSuffix):

freeDataset1 { applicationId "com.beansys.freeappdataset1" }
freeDataset2 { applicationId "com.beansys.freedataset2" }
paidDataset1 { applicationId "com.beansys.dataset1paid" }
paidDataset2 { applicationId "com.beansys.mypaiddataset2" }
Run Code Online (Sandbox Code Playgroud)

android gradle android-build android-gradle-plugin

22
推荐指数
2
解决办法
6260
查看次数

基于应用程序变体的构建配置(BuildType + Flavor)

我正在尝试为应用程序变体设置signingConfig, manifestPlaceholders, 。buildConfigField我可以为每个构建类型设置它们或者!ProductFlavor 独立,但我需要的是根据 ProductFlavor和!构建类型。

buildTypes{
  getByName("debug"){}
  getByName("release"){}
  create("staging"){}
}

productFlavors {
  create("global"){}
  create("local"){}
}
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,有 3 种不同的 buildType 和 2 种不同的 ProductFlavors。这意味着总共有 6 个 APK 变体。对于每个APK(globalRelease、globalStaging、globalDebug、localRelease、localStaging、localDebug),我想使用不同的signingConfig。我该如何设置?

尝试过:

  • 如果我在buildType中设置它,那么将只有3个不同的signingConfigs
  • 如果我将其设置为风味,那么将只有 2 个不同的签名配置
  • 如果我尝试将其设置为applicationVariants.all{},则没有 setter 函数,只有 Variant 对象上的 getter (链接)
  • 设置字段 on(variant.mergedFlavor as DefaultProductFlavor)不会将 buildConfigField 值添加到 BuildConfig.java (链接)

android gradle kotlin gradle-kotlin-dsl

9
推荐指数
1
解决办法
3876
查看次数

每种构建类型的resConfigs

如何覆盖resConfigs每种构建类型?我读过口味可以允许,但我不使用它们.我只想为我的调试构建另一组支持的语言.

这是我尝试过的:

buildTypes {
    debug {
        resConfigs "de", "en" // allow also german in debug builds
    }
    release {
        signingConfig signingConfigs.release
        resConfigs "en"       // english only releases
    }
}
Run Code Online (Sandbox Code Playgroud)

任何简单的想法我怎么能实现这一点?

android gradle

8
推荐指数
1
解决办法
1104
查看次数