gpt4 book ai didi

android - 使用 Gradle Kotlin-DSL 时如何使用 flavorDimensions 为每种 flavor 组合设置不同的 applicationId?

转载 作者:行者123 更新时间:2023-12-03 03:55:47 30 4
gpt4 key购买 nike

我正在使用 Kotlinscript 文件将 Android 应用程序转换为 Gradle Kotlin-DSL。

我在转换 applicationId 时遇到问题逻辑。我们不使用 defaultConfigurationapplicationId加上各种applicationIdSuffix对于我们的口味,但自定义逻辑。逻辑在 this SO answer 中描述。 ,这是常规代码:

flavorDimensions "price", "dataset"

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

android.applicationVariants.all { variant ->
def mergedFlavor = variant.mergedFlavor
switch (variant.flavorName) {
case "freeDataset1":
mergedFlavor.setApplicationId("com.beansys.freeappdataset1")
break
case "freeDataset2":
mergedFlavor.setApplicationId("com.beansys.freedataset2")
break
case "paidDataset1":
mergedFlavor.setApplicationId("com.beansys.dataset1paid")
break
case "paidDataset2":
mergedFlavor.setApplicationId("com.beansys.mypaiddataset2")
break
}
}

使用 kotlin 我无法更改 applicationIdmergedFlavor就像在 groovy 中一样。它是一个 val,因此无法更改。

任何优雅的解决方案来解决这个问题?

最佳答案

Google 在 Android Gradle 插件 7.0.0 中添加了变体 API。有了它,我们可以改变 applicationId .

android {
flavorDimensions.addAll(listOf("price", "dataset"))

productFlavors {
create("free") { dimension = "price" }
create("pro") { dimension = "price" }
create("dataset1") { dimension = "dataset" }
create("dataset2") { dimension = "dataset" }
}
}

androidComponents {
onVariants { variant ->
val applicationId = when(variant.flavorName) {
"freeDataset1" -> "com.beansys.freeappdataset1"
"freeDataset2" -> "com.beansys.freedataset2"
"proDataset1" -> "com.beansys.dataset1paid"
"proDataset2" -> "com.beansys.mypaiddataset2"
else -> throw(IllegalStateException("Whats your flavor? ${variant.flavorName}!"))
}
variant.applicationId.set(applicationId)
}
}
请注意,最好使用任务来确定 applicationId .
有关更多信息,请参阅以下资源:
  • https://developer.android.com/studio/releases/gradle-plugin#variant-api-stable
  • https://youtu.be/AZBW5StgF8o?t=240
  • 关于android - 使用 Gradle Kotlin-DSL 时如何使用 flavorDimensions 为每种 flavor 组合设置不同的 applicationId?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60103603/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com