如何在不同风格中使用相同名称的 class 时防止重复 Class 错误?

How do I prevent Duplicate Class error while using same named class in different flavors?

首先,我刚刚在 Whosebug 中检查了很多关于这个问题的主题,但其中 none 解决了我的问题。我的问题是;我有 2 种不同的口味,分别是主要口味和实验性口味。 main 是默认风味。我只想在实验性构建变体中覆盖或使用我的 A.java,但这会导致我重复 class 发现错误。我如何防止或解决此问题,因为我相信可以通过 flavors 使用相同的命名 class ?还是我做错了什么?我希望你能帮助我解决我的问题。提前致谢。

项目结构

build.gradle

productFlavors{ main{ dimension = "default" applicationId "com.example.yekta.basicApp.main" } experimental{ dimension = "default" applicationId "com.example.yekta.basicApp.experimental" } } sourceSets { main { java.srcDirs = ['src/main/java'] res.srcDirs = ['src/main/res'] assets.srcDirs = ['src/main/assets'] } experimental { java.srcDirs = ['src/experimental/java'] res.srcDirs = ['src/experimental/res'] assets.srcDirs = ['src/experimental/assets'] } }

第 1 步:将您的一种口味从 main 重命名为 maintestandroidTest 以外的任何其他有效值(或者,在您的案例,experimental,因为你已经有了那个名字的口味)

步骤 #2:使用您在步骤 #1 中选择的名称为新重命名的风格设置源集

步骤 #3:将您的 A.javamain 移动到您在步骤 #2

中创建的源集

main 源代码集用于将在所有产品风格和构建类型中使用的代码。您不能通过尝试将 main 变成产品口味来改变它。

请注意,在 Android Studio 3.2 上,尝试定义名为 main 的产品风格似乎会导致构建崩溃 — 至少,当我尝试重现此问题时它正在崩溃。