java - 使用产品口味时,是否需要针对不同版本的应用程序将Java文件分开?

标签 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")

提前致谢!

最佳答案

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

如果某个 flavor 维度中的任何 flavor 都需要特定Java文件的定制版本,则必须从main源集中删除该相同Java文件的副本,并在该 flavor 维度的每个特定于 flavor 的源集中放置适当的定制版本。 。您不能具有Java文件的特定于 flavor 的副本“覆盖” main副本。

根据您的特定错误,听起来像是

  • paidfree不是同一个 flavor 维度或
  • 的一部分
  • main源集中(通常位于src/main中),您仍然有Java文件的副本。

  • 如果是第一种情况,请确保两种口味都属于同一尺寸。

    如果是案例2,请从main源集中删除按 flavor 定制的任何文件的副本,并从 flavor 特定的源集中删除在 flavor 之间共享的任何文件的副本(将其保留在共享源集中main中) )。这样一来,您就可以避免定义BuildConfig bool(boolean) 值,并利用具有特定口味的类的事实来实现免费和付费模式之间的差异。

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

    关于java - 使用产品口味时,是否需要针对不同版本的应用程序将Java文件分开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49701338/

    相关文章:

    java - 网格袋背景图像

    java - 使用 Java 显示 CMD 窗口

    java - 将 Android 应用程序转换为 Android 库会出现错误 : constant expression required

    Android gradle同步问题

    java - 使用正则表达式搜索 HashSet

    java - 将 OPC(开放打包约定)文件转换为 JAVA 中的平面 XML 文件

    java - 在Android中实现库

    android - Android设置中的react-native-firebase依赖问题

    git - Monolith git repo 与 micro repos

    git - Intellij 导入问题 - java.io.IOException : Cannot run program "git": error=2, 没有这样的文件或目录