迁移到Android Studio 2.2后DexIndexOverflowException

时间:2016-10-07 13:25:36

标签: java android android-studio android-gradle android-multidex

我刚把我的项目移到Android Studio 2.2,我无法生成我的apk。

我收到此错误消息:

错误:任务':app:transformClassesWithDexForRelease'执行失败。

  

com.android.build.api.transform.TransformException:com.android.ide.common.process.ProcessException:java.util.concurrent.ExecutionException:com.android.dex.DexIndexOverflowException:方法ID不在[0, 0xffff]:65536

我该怎么做才能消除此错误?

2 个答案:

答案 0 :(得分:3)

项目中方法引用的数量超过65536,这是一个dex文件中可以存在的最大数量。在这种情况下,您应该按照以下步骤声明您的应用程序类型为MultiDex:

1-将multidex依赖项添加到您的应用级build.gradle

 compile 'com.android.support:multidex:1.0.1'

2-在app level build.gradle中的defaultConfigs中启用multidex:

android {

defaultConfig {
    ...

    // Enabling multidex support.
    multiDexEnabled true
   }
...
}

3-定义一个新类MyApplication,它扩展了MultidexApplication,它将作为应用程序的入口点。

public class MyApplication extends MultidexApplication

4-最后,您应该在AndroidManifest.xml中声明这个新类

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="your.package.name">

<application
    android:name=".path-to.MyApplication">
    ...
</application>
</manifest>

答案 1 :(得分:1)

项目编译生成dex文件,dex可以处理直到65536个方法。

您的项目编译方法超过65536种,因此您应改善依赖关系启用MultiDex ,将代码拆分为更多dex文件

在这里看看https://developer.android.com/studio/build/multidex.html更好的方法来解决它。