当我通过"运行(应用)"来构建我的项目时内置功能 - 一切都很好,我可以通过手机测试我的应用程序,但我想通过gradle创建独立应用程序。
我使用 gradle:client:clean:client:assemble 任务,这是我的输出:
Dex: Error converting bytecode to dex:sesWithDexForDebug
Cause: com.android.dex.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl;
UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl;
通过this link我搜索了我的模块之间的某些依赖关系。我查了一下,appcompat-v7和设计库都有support-v4库内置,所以我把它从设计库中删除了。
我的 build.gradle 文件:
dependencies {
//compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
//Support Design
compile ('com.android.support:appcompat-v7:23.4.0')
compile ('com.android.support:design:23.4.0') {
exclude module: 'support-v4'
}
//Butter Knife
compile 'com.jakewharton:butterknife:8.5.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1'
//Retrofit
compile 'com.squareup.retrofit2:retrofit:2.1.0'
compile 'com.jakewharton.retrofit:retrofit2-rxjava2-adapter:1.0.0'
//JSON Utils
compile 'com.google.code.gson:gson:2.5'
compile 'com.squareup.retrofit2:converter-gson:2.1.0'
//Dagger 2
compile 'com.google.dagger:dagger:2.9'
annotationProcessor 'com.google.dagger:dagger-compiler:2.9'
provided 'javax.annotation:jsr250-api:1.0'
//Android Plot
compile 'com.github.PhilJay:MPAndroidChart:v3.0.1'
//Apache Commons
compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.0'
//RxJava
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
compile 'io.reactivex.rxjava2:rxjava:2.0.1'
//Tests
testCompile 'junit:junit:4.12'
}
我该如何解决?
此致
修改
我添加了 multiDexEnabled true ,它给了我另一个错误:
Error:Execution failed for task ':client:transformClassesWithJarMergingForDebug'.
> com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: android/support/v4/hardware/display/DisplayManagerCompat$JellybeanMr1Impl.class
答案 0 :(得分:0)
当您的应用拥有超过64k的方法时,您必须启用Multidex。通常,当使用大量库时会发生这种情况。
要解决此问题,请在build.gradle中启用Multidex
android {
defaultConfig {
...
minSdkVersion 21
targetSdkVersion 25
multiDexEnabled true
}
...
}
答案 1 :(得分:0)
只需更改此属性
即可 multiDexEnabled false
至multiDexEnabled true