3 回答
TA贡献2011条经验 获得超2个赞
com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536
Android应用程序(APK)文件以Dalvik Executable(DEX)文件的形式包含可执行字节码文件,其中包含用于运行应用程序的编译代码。Dalvik Executable规范将单个DEX文件中可引用的方法总数限制为65,536个,包括您自己代码中的Android框架方法、库方法和方法。要克服这个限制,需要将应用程序构建过程配置为生成多个DEX文件,称为Multidex配置。
更改分级生成配置以启用Multidex
修改清单以引用MultiDexApplication类
修改您的应用程序Gradle构建文件配置,以包括支持库,并启用Multidex输出。
android { compileSdkVersion 25 buildToolsVersion "25.0.2" defaultConfig { ... minSdkVersion 14 targetSdkVersion 25 ... // Enabling multidex support. multiDexEnabled true } ...}dependencies { compile 'com.android.support:multidex:1.0.3' }
MultiDexApplication
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.android.multidex.myapplication"> <application android:name="android.support.multidex.MultiDexApplication"> </application></manifest>
override attachBaseContext()
public class MyApplication extends MultiDexApplication { @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); } }
然后
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.android.multidex.myapplication"> <application android:name=".MyApplication"> </application></manifest>
结语
虽然图书馆在大多数情况下解决了DEX 64K问题,但它应该被视为最后的手段。在尝试使用它之前,您应该检查项目中不需要的依赖项,并使用ProGuard尽可能多地删除未使用的代码。
- 3 回答
- 0 关注
- 368 浏览
添加回答
举报