【问题标题】:Error:Execution failed for task ':app:dexDebug'. > com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException:错误:任务“:app:dexDebug”执行失败。 > com.android.ide.common.process.ProcessException:org.gradle.process.internal.ExecException:
【发布时间】:2015-08-01 11:45:07
【问题描述】:

错误:任务 ':app:dexDebug' 执行失败。 > com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: 进程'命令'/Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/Home/bin/java''以非零退出值 2 结束

我遇到了上述异常。我认为问题出在我的 build.gradle 中。 我的 build.gradle 依赖项是:

dependencies {

    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.0.0'
    compile 'com.google.android.gms:play-services:7.3.0'
    compile 'com.astuetz:pagerslidingtabstrip:1.0.1'
    compile 'com.getbase:floatingactionbutton:1.9.0'
    compile 'com.parse.bolts:bolts-android:1.+'
    compile 'com.android.support:support-v4:22.2.0'
    compile 'com.melnykov:floatingactionbutton:1.3.0'
    compile 'de.hdodenhof:circleimageview:1.3.0'
    compile 'me.villani.lorenzo.android:android-cropimage:1.1.0'
    compile 'com.oguzdev:CircularFloatingActionMenu:1.0.2'

}

【问题讨论】:

    标签: android build.gradle jar-with-dependencies


    【解决方案1】:

    此错误是由于 Dalvik 可执行 (dex) 字节码文件的限制。由于项目中的依赖项数量已达到 65K 方法限制。这意味着 Dalvik 可执行文件只能引用 65,536 个方法,而您已经超过了这个限制。这些方法包括 Android 库中的方法、依赖项中的任何方法以及您自己编写的方法。

    要通过此限制,您可以在 build.gradle 文件中启用 multiDex,这将创建多个 Dalvik 可执行文件。

    android {
        compileSdkVersion 21
        buildToolsVersion "21.1.0"
    
        defaultConfig {
            ...
            minSdkVersion 14
            targetSdkVersion 21
            ...
    
            // Enabling multidex support.
            **multiDexEnabled true**
        }
        ...
    } 
    

    在启用 multidex 之前,请确保需要所有依赖项。您可以使用 ProGuard http://developer.android.com/tools/help/proguard.html 自动从您的构建中删除未使用的依赖项。

    【讨论】:

      【解决方案2】:

      您可以查看“libs”文件夹。

      compile fileTree(dir: 'libs', include: ['*.jar'])
      

      此代码可以导入“libs”中的所有包。如果您的“libs”有包,则无需再次编译。如果编译'v7',则无法编译'v4'。如果你的“libs”有“v4”,删除它。

      【讨论】:

        猜你喜欢
        • 2016-04-03
        • 2015-09-30
        • 2016-12-13
        • 2015-05-16
        • 2015-05-09
        • 2016-06-27
        相关资源
        最近更新 更多