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

Do I need to separate java files for different version of app when using product flavors?

第一次使用产品口味,我不确定是否需要在每个产品文件夹中放置所有内容的精确副本,例如。 src/flavor1/com/app/pro/company/"all my java files"。我有免费版本的相同文件结构。我试试这个,我得到 "Duplicate class found in the file "C:\blah\blah\Settings.java" 错误。我设置gradle 中的一个布尔值,用于在提到的文件中分离免费版本和付费版本。这里有什么建议吗?是否有两个版本都使用一个 java 文件?

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

提前致谢!

如果 Java 文件在风味维度中的 所有 风味之间共享,那么您可以在 main 源集中保留一个副本。这减少了重复!

如果风味维度中的任何风味需要特定Java文件的自定义版本,那么您必须删除相同Java的副本来自 main 源集中的文件,并在每个 flavor-specific 源集中为该风格维度放置适当定制的版本。您不能拥有 Java 文件 "override" 和 main 副本的风味特定副本。

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

  1. paidfree 不属于同一风味维度,或者
  2. 您的 main 源集中(通常位于 src/main)中仍有 Java 文件的副本。

如果是情况 1,请确保两种口味属于同一维度。

如果是情况 2,从 main 源集中删除任何定制 per-flavor 文件的副本,并从 [=44] 中删除风格之间共享的任何文件的副本=] 源集(将它们留在共享源集中 main)。这可能会让您避免定义 BuildConfig 布尔值并利用您拥有 flavor-specific 类 的事实来实现免费和付费模式之间的差异。

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