【问题标题】:How to define custom source set in android gradle.kts?如何在 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?

我该怎么办?

【问题讨论】:

    标签: android kotlin gradle android-productflavors source-sets


    【解决方案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
            }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-20
      • 1970-01-01
      • 1970-01-01
      • 2021-07-07
      • 2018-11-07
      • 2013-05-17
      • 2022-01-23
      相关资源
      最近更新 更多