android - 使用 Flavors 构建不同的应用程序 - 不同的代码。
问题描述
我正在构建一个具有几种不同风格的应用程序。我的问题是,如果我对基于风味的活动使用不同的代码,我是否需要在所有风味目录中包含该代码的副本,或者如果我只是将代码的副本留在 app/src/main/java 目录中,如果我不将它包含在风味目录中,所有其他风味是否会使用 main/java 中的文件。
我有
app/src/main/java/com/mycompany/CodeA.java
和
app/src/flavor1/java/com/mycompany/CodeA.java
并且flavor2没有特殊的源集文件夹,flavor2会使用app/src/main/java/com/mycompany/CodeA.java中的代码文件吗?或者我是否需要创建一个源集文件夹,其中包含每种风格的代码副本?我对几种风格使用不同的资源文件夹,但对于所有其他风格,资源文件夹默认为 app/src/main 目录中的文件。
解决方案
注意:对于给定的构建变体,如果 Gradle 遇到两个或多个定义了相同 Java 类的源集目录,则会引发构建错误。例如,在构建调试 APK 时,您不能同时定义 src/debug/Utility.java 和 src/main/Utility.java。这是因为 Gradle 在构建过程中同时查看这两个目录并抛出“重复类”错误。如果您希望不同版本的 Utility.java 用于不同的构建类型,您可以让每个构建类型定义自己的文件版本,而不是将其包含在主/源集中。- 来自https://developer.android.com/studio/build/build-variants的引用。这正是你要问的。所以答案 - 它不会编译,你必须在两种风格中定义代码文件,而不是在 main 中。
推荐阅读
- matrix - 使用 Octave 在矩阵列中查找最大值和最小值
- r - 提取每个组的 top_n 变量名称
- php - laravel 表单发布/补丁
- amazon-web-services - 尝试在 Cloudwatch EC2 仪表板中为变量配置多值选择
- spring-boot - Spring JPA QuerydslPredicate Snake 案例
- python - 遍历两个 pandas 列表
- batch-file - 查找卷 D,如果找到并且卷大小大于 1tb 运行 DISKPART /S 文件名
- angular - 我可以根据屏幕大小更改默认的 mat-paginator 大小吗?
- c# - 获取 Http 响应标头和内容 Angular 6
- android - 默认浏览器在哪里,我如何在cordova android应用程序中更新它?