【发布时间】:2020-02-06 21:13:22
【问题描述】:
我正在使用 Kotlinscript 文件将 Android 应用程序转换为 Gradle Kotlin-DSL。
我在转换 applicationId 逻辑时遇到问题。我们不使用defaultConfiguration 和applicationId 以及各种applicationIdSuffix 来满足我们的口味,而是使用自定义逻辑。逻辑在this SO answer中描述,这里是groovy代码:
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,我无法像在 groovy 中那样更改 mergedFlavor 的 applicationId。它是一个 val,因此无法更改。
任何优雅的解决方案来解决这个问题?
【问题讨论】:
标签: android gradle gradle-kotlin-dsl