如果你需要口味,你应该去build gradle
并添加你需要的口味
喜欢这个
productFlavors {
mock {
applicationIdSuffix = ".mock"
}
prod {}
}
然后你需要像/src/prod/java/
我认为它应该如何工作,根据选择的构建变体,例如prodDebug
androidStudio将作为基本主要来源并根据选择的构建变体替换来自dir的相应类。
但后来我找到了下一个
的片段特定于flavor的文件夹中的文件不会替换主源集中的文件。尝试这样做会导致重复的类异常。这是一种常见的误解,因为它是如何合并资源的。
答案 0 :(得分:2)
好的,所以对于带有flavor的基本配置,你有两个种的源集:
main
source set mock
和prod
使用标准buildTypes
配置( debug 和发布),这将为您提供以下构建变体(构建类型的组合)和产品口味):
它们中的每一个都使用与主要集合的风味/类型名称和相对应的每个源集,例如, prodRelease 将使用以下所有来源立即设置:
实际上,构建系统会将所有这些“合并”到一个源集中,这意味着如果这些集合中存在具有相同路径和名称的类,则会发生名称冲突,编译器将失败。
正确使用源集的方法是省略 main 集中每个集需要不同的类,而是为每个flavor / each buildType提供所有集合,例如:
此行为不限于类,您可以使用flavor或类型特定资源, AndroidManifest.xml 文件以及任何进入源目录的内容。
提示:在Android Studio中,您可以在“项目文件”部分中看到将选择哪些文件进行特定变体的编译。要切换构建变体,请按Cmd + Shift + A(mac键映射)并搜索构建变体短语。它通常也显示在Android Studio窗口的左下方。
答案 1 :(得分:1)
来自main
来源集的代码将始终进入APK。只有在使用正确的构建变体时,才会合并其他源集中的源文件。例如,您可以创建两个文件:
根据您是否正在构建prod
或mock
变体,其中一个类将与APK一起编译和打包。同样适用于debug
和release
:您可以拥有仅打包到应用程序的调试版或发行版中的代码和资源。