一.问题产生和解决过程
1.问题描述
打包的时候总是提示:
com.android.dex.DexException:Too many classes in --main-dex-list, main dex capacity exceeded
2.问题原因
因为主dex包中的方法数超过65535(Short.MAX_VALUE),导致生成包失败。
追溯问题:
if (args.mainDexListFile != null) {
// with --main-dex-list
// ...
// forced in main dex
for (int i = 0; i < fileNames.length; i++) {
// call processClass
processOne(fileNames[i], mainPassFilter);
}
if (dexOutputArrays.size() > 0) {
throw new DexException("Too many classes in " + Arguments.MAIN_DEX_LIST_OPTION
+ ", main dex capacity exceeded");
}
}
3.问题解决
-
在app的build.gradle中添加:
//支持多包打包 multiDexEnabled = true //支持自定义主dex包中的类 multiDexKeepProguard file('multiDexKeep.txt&