在我的Android项目中,我配置了一个具有3个变量的维度(例如:mock,dev,prod)。我也有默认的构建类型(debug,release),其中我有它们的Application实现:
src/debug/java/package/MyApplication.kt
src/release/java/package/MyApplication.kt
所以我可以生成6个构建(mockDebug、mockRelease、devDebug、devRelease等)
现在我的mockDebug变体需要MyApplication. kt的特定实现。
正如我在这里读到的,我可以在这个路径中创建一个类MyApplication:src/mockDebug/java/package/MyApplication.kt
然而,我在Android Studio中收到一个错误,说“重新声明:MyApplication”。
我确信我可以解决这个问题,将所有调试/发布MyApplication.kt实现移动到
- 模拟调试
- mockRelease
- DevDebug
- devRelease
- prodDebug
- prodRelease
目录,但我不明白为什么文档说这是可能的,即使我收到的错误
谢谢你帮我
6条答案
按热度按时间sgtfey8w1#
在我的情况下,删除
/build
文件夹解决了这个问题。bzzcjhmw2#
“再次声明:MyApplication”你看到上面的错误,因为它存在于主要和你的味道或变体
方法应该是类或文件你想改变不应该在主使该文件的副本,并将它们添加到风味或变体,并做你想看到的变化。
yiytaume3#
您可以尝试以这种方式实现Gradle。在Build.gradle中:
所以,现在你可以有这样的文件夹结构:
因此,一旦您构建了项目,请从BuildVariant选项卡中选择变体,以便它将采用相应的Application.kt。
希望这将有助于解决您的问题。
vawmfj5a4#
正如文档中所指定的,您必须从主包中删除该类。
dly7yett5#
您应该只看到debug或releasejava 文件夹为“sources root”取消标记未活动的文件夹。在android studio中,右键单击Java文件夹-〉将目录标记为-〉取消标记为源根
ahy6op9u6#
正如这里所解释的,你不能这样做。你需要使用
main
以外的另一个源文件夹。注意事项:对于给定的构建变体,如果Gradle遇到两个或多个源集目录定义了相同的Kotlin或Java类,则会抛出构建错误。例如,在构建调试应用时,不能同时定义src/debug/Utility.kt和src/main/Utility.kt,因为Gradle在构建过程中会同时查看这两个目录,并抛出“重复类”错误。如果您需要不同版本的Utility。kt对于不同的构建类型,每个构建类型必须定义自己的文件版本,并且不将其包含在main/ source集中。