1

我想在三个商店发布我的应用程序。我的应用程序中有汇率部分和更新对话框(其中有一个按钮可以转到商店以更新应用程序)。为了管理这些功能,我决定将三种风格和三种来源设置为在不同的 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?

我应该怎么办?

4

1 回答 1

0

我意识到使用源集不适合这种情况,我决定使用 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
        }
    }
于 2021-09-28T14:04:46.103 回答