重新声明类配置Android构建变体时出错
在我的Android项目中,我用3个变量(例如:mock、dev、prod)配置了一个维度。 我还有默认的构建类型(debug、release),其中我有应用程序的实现:重新声明类配置Android构建变体时出错,android,gradle,build.gradle,android-productflavors,Android,Gradle,Build.gradle,Android Productflavors,在我的Android项目中,我用3个变量(例如:mock、dev、prod)配置了一个维度。 我还有默认的构建类型(debug、release),其中我有应用程序的实现: src/debug/java/package/MyApplication.kt src/release/java/package/MyApplication.kt 所以我可以生成6个构建(mockDebug、mockRelease、devDebug、devRelease等) 现在,我的mockDebug变体需要MyAppl
src/debug/java/package/MyApplication.kt
src/release/java/package/MyApplication.kt
src/mockDebug/java/package/MyApplication.kt
然而,我在Android Studio中收到一个错误,上面写着“重新声明:我的应用程序”
我相信我可以解决这个问题,将所有调试/发布MyApplication.kt实现迁移到
- 模拟调试
- 模拟释放
- 德夫德布格
- 德夫雷莱斯
- 产品调试
- 产品发布
感谢您的帮助您可以尝试以这种方式实现Gradle。 在Build.gradle中:
buildTypes {
release {
debuggable false
minifyEnabled true
zipAlignEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
debuggable true
zipAlignEnabled false
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
productFlavors {
mock {
minSdkVersion 17
applicationId 'com.test.mock'
targetSdkVersion 23
testInstrumentationRunner 'android.support.test.runner.AndroidJUnitRunner'
versionCode 1
versionName '1.0'
}
dev {
minSdkVersion 17
applicationId 'com.test.dev'
targetSdkVersion 23
testInstrumentationRunner 'android.support.test.runner.AndroidJUnitRunner'
versionCode 1
versionName '1.0'
}
prod {
minSdkVersion 17
applicationId 'com.test.prod'
targetSdkVersion 23
testInstrumentationRunner 'android.support.test.runner.AndroidJUnitRunner'
versionCode 1
versionName '1.0'
}
}
现在,您可以使用如下文件夹结构:
/src/mock/Application.kt
/src/dev/Application.kt
/src/prod/Application.kt
因此,一旦您构建了项目,从BuildVariant选项卡中选择变量,这样它将使用相应的Application.kt
希望这将有助于解决您的问题 “重新声明:我的应用程序”
您认为上述错误主要存在于您的口味或变体中
方法应该是你想更改的类或文件不应该是主文件,复制该文件并将它们添加到Flavor或variant中,然后进行你想看到的更改。在我的例子中,删除
/build
文件夹解决了问题。按照指定,你必须从主包中删除该类。嗨,“MyApplication.kt”包含基于构建类型(debug/release)而非变体(mock/dev/prod)的不同逻辑,因此我不想将此类重构/复制到调试变体的mockDebug、devDebug和prodDebug,以及发布变体的mockRelease、devRelease和prodlease。我只想维护调试/发布实现,但我只想为mockDebug组合覆盖它。Android文档说这是可能的,但它不正常。。。那么您是否尝试过在Gradle中使用源集?另外,如果您使用的是源代码集,那么/src/main/->不应该有Application.kt;文件夹应该是这样的:-1)/src/main/2)/src/debug/Application.kt 3)/src/release/Application.kt这样你就可以在没有重复错误的情况下构建Gradle。我在main dir中没有任何MyApplication.kt,只有在debug和release中,它们是互斥的。但是,当我在mockDebug目录中创建第三个文件时,我在debug和mockDebug MyApplication类中都收到了“重新声明”错误,就好像它们之间存在冲突一样,我遇到了类似的问题。我需要为BuildType(调试和发布)使用不同的类,而不是productFlavor。但我在IDE上遇到了“重新声明”类错误。现在,我只是忽略它,因为assemble
和bundle
命令仍然有效。