在我的Android项目中,我用3个变体配置了一个维度(例如: mock、dev、prod)。我还有默认的构建类型(调试、发布),其中我有它们的应用程序实现:
src/debug/java/package/MyApplication.ktsrc/release/java/package/MyApplication.kt这样我就可以生成6个版本(mockDebug、mockRelease、devDebug、devRelease等)
现在,我的mockDebug变体需要一个特定的MyApplication.kt实现。
当我阅读这里时,我可以这样做,在这个路径中创建一个类MyApplication:src/mockDebug/java/package/MyApplication.kt
然而,我在Android中收到一个错误,上面写着"Redeclaration: MyApplication“。
我确信我可以解决这个问题,将所有的调试/发布MyApplication.kt实现移到
目录,但是我不明白为什么文档说它是可能的,即使我收到了那个错误
谢谢你帮我
发布于 2020-12-15 10:24:40
在我的例子中,删除/build文件夹解决了这个问题。
发布于 2020-10-23 05:44:34
"Redeclaration: MyApplication“--您将此错误视为主要错误和您的口味或变体中的错误。
方法应该是您想要更改的类或文件,不应该主要地复制该文件,并将它们添加到调味或变体中,并进行您想要看到的更改。
发布于 2019-07-29 09:32:36
您可以尝试以这种方式实现分级。在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。
希望这将有助于解决你的问题。
https://stackoverflow.com/questions/57250541
复制相似问题