在Android Studio中使用Gradle构建变体

3
我在使用Gradle的Android Studio中遇到了关于flavors的问题……请看以下内容:
你有三个构建flavor:Flavor1,Flavor2和Flavor3。
这三种flavor都依赖于同一个文件,在此简称为MainActivity.java。此外,这三种flavor都有自己定义的Constants文件,在此称之为Constants.java。
除了Constants.java之外,Flavor1和Flavor2都依赖于相同的源代码。换句话说,Flavor1和Flavor2都使用来自main的以下文件:MainActivity.java以及另一个文件,在此简称为AnotherActivity.java。
现在,Flavor3使用MainActivity.java,但是需要一些额外的定制和对AnotherActivity.java的更改。
File Structure:
src
-main
--java
---MainActivity.java
---AnotherActivity.java

-Flavor1
--java
---Constants.java
-Flavor2
--java
---Constants.java
-Flavor3
--java
---Constants.java
---AnotherActivity.java

有没有一种方法在使用Gradle时,在Android Studio中实现这种构建依赖关系而不会出现重复的类文件错误?
谢谢!
最好的祝福, Christopher Steven
2个回答

5
我发现只有资源会以这种方式合并。源文件将合并到一个构建路径中。您需要像Constants.java一样将AnotherActivity.java复制到每个flavor中。尽可能地重构源代码以减少重复是最好的选择。您可以在src/main/java中使用AbstractAnotherActivity.java,其他类继承它来实现这一点。
当您在Android Studio中选择构建变体时,您会注意到它仅显示包视图中所选变体的源代码。

0
当使用Gradle flavors(名称相同)时,一个类完全替换另一个类。避免重复使用代码的最佳实践是将所有共享代码放在MainActivity中,以避免重复(否则必须在多个位置进行更改)。在AnotherActivity类中引用任何其他代码/覆盖。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接