为每个构建变体使用不同的类

6

我有一个Application类,我希望在每个构建变体(如debug和release)中都不同。
这是我的映射表:

app/      
   |      
   |----debug/          
             |----java\            
                       |----com.example.App.class       
             |----res\
                      |----mipmap-hdpi       
   |----main/          
             |----java\      
                      |----com.example.App.class       
             |----res\
                      |----mipmap-hdpi            

但在Android Studio中给我显示了这个错误信息 "duplicate class found in ..."
但在我的资源中并没有显示任何错误。
我的问题是为什么Gradle不能确定不同构建变体应该使用哪个类,而它可以决定在不同构建变体中必须使用哪些资源。


为什么不在build.gradle中配置BuildConfig类,而不是使用两次相同的类? - Debdeep
请再多解释一些。 - max
我猜你是在buildTypes下两次引用了App.class以实现不同的功能? - Debdeep
是的,这就是我想要做的。 - max
在你的main中,对于每个依赖于构建类型的代码,请放置一个if(BuildConfig.debug)和else条件。否则,请按照@laalto下面给出的正确方法进行操作。 - Debdeep
是的,但问题在于我依赖于debugImplementation,而在发布版本中我没有该依赖项,因此我必须将其注释和取消注释,每次想要更改构建变体时。 - max
1个回答

9

main下的代码在所有构建类型之间共享。因此,该类会出现两次,一次来自debug,一次来自main

为了拥有特定于构建类型的源文件,请将它们放在特定于构建类型的文件夹中,而不是main中。例如,如果您有通常的debugrelease构建类型,请将其他变量放在release下。

为什么对于资源不需要这样做呢?因为资源合并可以覆盖构建类型上的资源。没有代码合并。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接