【问题标题】:MultiDex issue - Execution failed for task ':app:dexDebug'MultiDex 问题 - 任务“:app:dexDebug”执行失败
【发布时间】:2015-05-07 15:03:46
【问题描述】:

我在将 Google Calendar API 的一行添加到 build.gradle 时遇到问题。这是错误:

UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]:65536
    at com.android.dx.merge.DexMerger$6.updateIndex(DexMerger.java:502)
at com.android.dx.merge.DexMerger$IdMerger.mergeSorted(DexMerger.java:277)
at com.android.dx.merge.DexMerger.mergeMethodIds(DexMerger.java:491)
at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:168)
at com.android.dx.merge.DexMerger.merge(DexMerger.java:189)
at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454)
at com.android.dx.command.dexer.Main.runMonoDex(Main.java:303)
at com.android.dx.command.dexer.Main.run(Main.java:246)
at com.android.dx.command.dexer.Main.main(Main.java:215)
at com.android.dx.command.Main.main(Main.java:106)
Error:Execution failed for task ':app:dexDebug'.
> com.android.ide.common.process.ProcessException: 
 org.gradle.process.internal.ExecException: Process 'command 
'/usr/java/jdk1.7.0_79/bin/java''

finished with non-zero exit value 2
Information:BUILD FAILED
Information:Total time: 14.802 secs
Information:1 error
Information:2 warnings
Information:See complete output in console

我尝试了很多选项,但没有任何效果。当我将"multiDex true" 添加到defaultConfig 时,appcompat 库无法连接到我的项目,并且应用程序因java.lang.NoClassDefFoundError: android.support.v7.appcompat.R$layout. 而崩溃

这是我的build.gradle

apply plugin: 'com.android.application'

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"

defaultConfig {
    applicationId "ua.appp.appp"
    minSdkVersion 14
    targetSdkVersion 21
    versionCode 15
    versionName "2.1.0"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
   }
 }

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.0.0'

    compile 'com.google.android.gms:play-services:6.5.87'
    compile 'com.google.apis:google-api-services-calendar:v3-rev119-1.19.1'
    compile 'com.google.api-client:google-api-client:1.19.1'
    compile 'com.google.api-client:google-api-client-android:1.19.1'
    compile 'com.google.api-client:google-api-client-gson:1.19.1'

    compile 'com.github.navasmdc:MaterialDesign:1.+@aar'
    compile 'com.afollestad:material-dialogs:0.6.5.2'
    compile 'com.nhaarman.listviewanimations:lib-core:3.1.0@aar'
    compile 'com.nhaarman.listviewanimations:lib-manipulation:3.1.0@aar'
    compile 'com.nhaarman.listviewanimations:lib-core-slh:3.1.0@aar'
}

PS:一些有趣的事实:当我将所有这些库添加到测试项目中时,代码可以编译并且可以正常工作而没有错误。

【问题讨论】:

  • 我建议检查应用程序的某些子模块中是否存在对该库的其他依赖项,清理和重建项目有时也有助于解决构建错误。此外,我建议检查库的版本并检查它是否确实具有您尝试使用的方法和类。但是我不能说我在这里看到任何实际问题......您是否尝试过删除该库的所有用法但留下依赖关系?附言У стэка есть русская версия, где можно общаться на русском языке без проблем

标签: android google-api google-calendar-api android-gradle-plugin build.gradle


【解决方案1】:

当您添加 multidex:true 时,不要忘记在您的项目中创建一个从 MultiDexApplication 扩展的 Application 类,否则会发生很多坏事

public class YourApplication extends MultiDexApplication {
    ..........
}

也不要忘记这一点(版本可能会随着时间而改变,如果您阅读此内容,请确保使用最新版本)

dependencies {
    'com.android.support:multidex:1.0.1'
}

【讨论】:

  • 美丽 =-) 谢谢 =-)
  • 没问题。我会说你失去了童贞,你的应用程序打破了 2^16 方法限制。 ^.^
猜你喜欢
  • 2015-07-16
  • 2023-03-23
  • 2016-12-13
  • 2015-05-16
  • 1970-01-01
相关资源
最近更新 更多