使用产品口味时,是否需要为不同版本的应用程序分隔java文件?

时间:2018-04-06 21:40:10

标签: java android gradle android-productflavors file-structure

首次使用产品口味,我不确定是否需要在每个产品文件夹中放置完全相同的内容,例如。 src / flavor1 / com / app / pro / company /"我所有的java文件"。我有免费版本的相同文件结构。我试试这个,然后在文件" C:\ blah \ blah \ Settings.java" 错误中找到 "重复类。我在gradle中设置了一个bool,用于在所提到的文件中分离免费版和付费版。这里有什么建议吗?反正有两个版本都使用一个java文件吗?

我在gradle中使用buildConfigField("boolean", "demomode", "false")

提前致谢!

1 个答案:

答案 0 :(得分:1)

如果在样式维度中所有样式之间共享Java文件,则可以在main源集中保留一个副本。这减少了重复!

如果风味维度中的任何风格需要特定Java文件的自定义版本,则必须从main源集中删除该同一Java文件的副本,并放置针对该风味维度的每个特定于风味的源集合中的适当定制版本。您不能拥有Java文件的特定于风味的副本"覆盖" main副本。

根据您的具体错误,听起来像是

  1. paidfree不属于同一风格维度,或
  2. 您的main源集(通常位于src/main)中仍然拥有Java文件的副本。
  3. 如果是第1种情况,请确保这两种口味属于同一维度。

    如果是第2种情况,请从main源集中删除每个风格自定义的任何文件的副本,并删除风味特定源集中风味之间共享的任何文件的副本(离开它们位于共享源集main)中。这可能允许您避免定义BuildConfig布尔值,并利用您具有特定于特定类的类来实现免费和付费模式之间的差异。

    有关源集的更多背景信息,请参阅the docs