如何在 android gradle.kts 中定义自定义源集?
Posted
技术标签:
【中文标题】如何在 android gradle.kts 中定义自定义源集?【英文标题】:How to define custom source set in android gradle.kts? 【发布时间】:2021-11-18 09:57:26 【问题描述】:我想在三个商店发布我的应用程序。我的应用程序中有汇率部分和更新对话框(其中有一个按钮可以转到商店以更新应用程序)。为了管理这些功能,我决定将三种风格和三种来源设置为在不同的 kotlin 文件中具有不同的速率和更新部分实现。 这是我的 Gradle 文件:
android
flavorDimensions("appStores")
productFlavors
create("p1Flavor")
dimension="appStores"
sourceSets
create("p1SourceSet")
java.srcDirs("src/main/java","src/firstStoreDir")
create("p2Flavor")
dimension="appStores"
sourceSets
create("p2SourceSet")
java.srcDirs("src/main/java","src/secondStoreDir")
create("p3Flavor")
dimension="appStores"
sourceSets
create("p3SourceSet")
java.srcDirs("src/main/java","src/thirdStoreDir")
我想为每种风味添加一个包含两个文件(updateStore.kt 和 rate.kt)的目录到 src。我的意思是我有三个具有三个不同名称的目录,每个目录都包含具有不同实现的 updateStore.kt 和 rate.kt。
当我构建我的项目时,我收到了这个错误:
The SourceSet 'p1SourceSet' is not recognized by the Android Gradle Plugin. Perhaps you misspelled something?
我该怎么办?
【问题讨论】:
【参考方案1】:我意识到使用源集不适合这种情况,我决定使用 buildConfigField。
android
flavorDimensions("appStores")
productFlavors
create("p1Flavor")
dimension="appStores"
buildConfigField("String","APP_STORE_NAME","\"p1store\"")
create("p2Flavor")
buildConfigField("String","APP_STORE_NAME","\"p2store\"")
dimension="appStores"
create("p3Flavor")
buildConfigField("String","APP_STORE_NAME","\"p3store\"")
dimension="appStores"
以及我需要了解选择哪种口味的每个地方,我都使用这些代码:
when(BuildConfig.APP_STORE_NAME)
"p1store" ->
//TODO
"p2store" ->
//TODO
"p3store" ->
//TODO
【讨论】:
以上是关于如何在 android gradle.kts 中定义自定义源集?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 gradle kts 中排除(忽略)android 构建变体
Android Studio 和 Gradle KTS 构建文件
Android Studio:使用 Gradle KTS 构建文件的项目结构不可用