如何在使用不同风格的相同命名类时防止重复类错误?
Posted
技术标签:
【中文标题】如何在使用不同风格的相同命名类时防止重复类错误?【英文标题】:How do I prevent Duplicate Class error while using same named class in different flavors? 【发布时间】:2019-03-12 11:48:07 【问题描述】:首先,我刚刚在 *** 中检查了很多关于这个问题的主题,但没有一个能解决我的问题。我的问题是;我有两种不同的口味,分别是主要口味和实验性口味。 main 是默认风格。我只想在实验性构建变体中覆盖或使用我的 A.java,但这会导致我发现重复类错误。我如何防止或解决此问题,因为我相信可以通过风味使用相同的命名类?还是我做错了什么?我希望你能帮助我解决我的问题。提前致谢。
项目结构
应用程序 源 主要 Java 核心 A.java 实验性 Java 核心 A.javabuild.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】:第 1 步:将您的一种风味从 main
重命名为除 main
、test
或 androidTest
之外的任何其他有效值(或者,在您的情况下,为 experimental
,因为您已经有了同名的味道)
第 2 步:使用您在第 1 步中选择的名称为新重命名的风味设置源集
步骤 #3:将 A.java
从 main
移动到您在步骤 #2 中创建的源集
main
源代码集用于将在所有产品风格和构建类型中使用的代码。您无法通过尝试将 main
转变为产品风味来改变这一点。
请注意,在 Android Studio 3.2 上,尝试定义名为 main
的产品风格似乎会导致构建崩溃 — 至少,当我尝试重现此问题时它会崩溃。
【讨论】:
我将那个味道重命名为experimentalTwo,但它仍然显示;在文件位于该 A.class 文件的主目录中 中找到重复的类。现在,我在项目中有三个 A.java。第一个在实验目录下。第二个在experimentalTwo目录下,最后一个在主目录下。 @YektaSarıoğlu:main
中不能有A.java
——所有实现都必须在产品风格中(并且每个产品风格都需要一个实现)。这就是为什么我建议您将 A.java
从 main
移动到新的源集。
我错过了那部分。现在,它起作用了。谢谢你的帮助,@CommonsWare以上是关于如何在使用不同风格的相同命名类时防止重复类错误?的主要内容,如果未能解决你的问题,请参考以下文章