java - Gradle 构建失败 : Dex files cannot exceed 64k

标签 java android gradle dalvik dex

<分区>

每当我按项目构建并准备在我的设备上启动时,我总是收到此错误:

Error:The number of method references in a .dex file cannot exceed 64K. Learn how to resolve this issue at https://developer.android.com/tools/building/multidex.html

此外,我收到此错误:

Error:Execution failed for task ':app:transformClassesWithDexForDebug'. com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.8.0_91\bin\java.exe'' finished with non-zero exit value 2

它说 gradle 构建失败,有两个错误

所以我有一些问题:

  • 什么是dex文件
  • 我没有直接使用它们,为什么会出现上述错误?
  • dex 文件中有什么?
  • 这些文件对 .APK 文件的大小有什么影响吗?

这些错误在我停止使用 proguard 进行调试构建后再次出现,因为 StackTrace 没有显示,就在我激活 proguard 之前我遇到了错误。

我以前遇到过一次这个错误,我删除了 dex 文件夹并解决了它,但现在突然不能用了。

我的gradle文件:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.3"

    defaultConfig {
        applicationId "com.example.myproject"
        minSdkVersion 15
        targetSdkVersion 23

    }

    buildTypes {
        release {
            minifyEnabled true
            shrinkResources true

            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }

    }
}

dependencies {

    compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha1'
    compile 'com.android.support:support-v4:23.3.0'
    compile 'com.google.android.gms:play-services:9.2.0'
    compile 'com.google.android.gms:play-services-ads:9.2.0'
}

最佳答案

您添加的依赖项越多 - 您的方法数就越多。更改您的 gradle 以反射(reflect)这一点:

defaultConfig {
    ...
    minSdkVersion 15
    targetSdkVersion 23
    ...

    // Enabling multidex support.
    multiDexEnabled true
}

这是一个直接的修复方法,只有当您的 minSdkVerison 为 14 或更高版本时才有效。 同时添加如下依赖:

dependencies {
  compile 'com.android.support:multidex:1.0.0'
}

有时,您利用的依赖项将(单独)引用相同的库 - 您可能有许多方法,这些方法是双倍的、三倍的、四倍的,等等...查看这个 SO 答案来解决这个问题并始终减小您的 APK 大小. gradle - library duplicates in dependencies

关于java - Gradle 构建失败 : Dex files cannot exceed 64k,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38211789/

相关文章:

javascript - Kotlin JS 项目的基本 Gradle 脚本 Kotlin 文件是什么样的?

android - 为什么gradle不实现com.android.support:design:28.0.0来添加TextInputLayout?

java - Android:与其他应用程序上的 Intent 共享位图

Java枚举自动递增条目?

android - 当设备保持静止但被触摸时 Android 动画的性能下降

安卓工作室 : "Ok" button disabled in "Create new AVD" window

android - Material 日期选择器自定义样式

android - 在 gradle.build 中获取 App 名称

java - JButton 的 doClick() 方法

java - 将带有数组的对象添加到数据库 FireBase