您的位置:首页 > 移动开发 > Android开发

Android工程方法数超过65535的解决办法

2017-07-04 12:03 288 查看
Error:Execution failed for task ':ttt:transformClassesWithDexForDebug'.
com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536

很不幸,今天被我遇到了,集成了一个Udesk客服功能,导入它的moudle,里面乱七八糟导入了一大堆第三方。作为一个第三方客服,你这样真的好么?

解决方案

Gradle 配置:app的build.gradle中

android {
defaultConfig {
applicationId "com.xxx.xxx"
minSdkVersion 14
targetSdkVersion 21

multiDexEnabled true  //加上这句话
}
}


Gradle 配置:app的build.gradle中

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


自己的Application 类重写方法:

@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}

也可以继承android.support.multidex.MultiDexApplication类,不用重写上面方法

如果你的应用中包含引用的lirary工程或moudle,需要将预编译设置为false:

android {
// ...
dexOptions {
preDexLibraries = false
}
}


当运行时如果看到如下错误:

UNEXPECTED TOP-LEVEL ERROR:
java.lang.OutOfMemoryError: Java heap space

在dexOptions中有一个字段用来增加java堆内存大小:

android {
// ...
dexOptions {
javaMaxHeapSize "2g"
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: