Android gradle.kts自定义source set不被识别,如何正确配置适配多商店分发?
错误原因
你收到该报错是因为Android Gradle插件(AGP)对Product Flavor对应的SourceSet有固定的命名匹配规则,不支持在productFlavors配置块内自定义命名SourceSet,你额外创建的p1SourceSet这类不符合规则的自定义SourceSet无法被AGP识别。
正确配置方案
你需要把SourceSet配置移到和productFlavors平级的android块下,直接匹配Flavor的名称即可,无需自定义SourceSet名称:
android { flavorDimensions("appStores") productFlavors{ create("p1Flavor"){ dimension = "appStores" } create("p2Flavor"){ dimension = "appStores" } create("p3Flavor"){ dimension = "appStores" } } // SourceSet 与 productFlavors 平级配置 sourceSets { val p1Flavor by getting { java.srcDirs("src/main/java", "src/firstStoreDir") } val p2Flavor by getting { java.srcDirs("src/main/java", "src/secondStoreDir") } val p3Flavor by getting { java.srcDirs("src/main/java", "src/thirdStoreDir") } } }
注意事项
- 各商店源码目录下的
updateStore.kt和rate.kt需要保证包名完全一致,main目录下仅存放公共接口/抽象类,不要放置同名实现类,避免类重复冲突。 - 如果你不想手动配置
srcDirs,也可以直接在src目录下创建和Flavor同名的源码目录:src/p1Flavor/java、src/p2Flavor/java、src/p3Flavor/java,AGP会自动识别这些目录为对应Flavor的源码目录,无需额外编写SourceSet配置。 - 构建项目时选择对应Flavor的构建变体,即可自动编译对应商店目录下的实现逻辑。
内容的提问来源于stack exchange,提问作者Mohammad Bahadori
相关产品推荐
相关产品推荐

