Too many classes in --main-dex-list
2016-05-07 14:00
357 查看
摘要: com.android.dex.DexException
在解决完方法数超过65535的问题后,由于项目一直在更新增加代码,后来在使用android studio生成apk时会报出:
com.android.dex.DexException:Too many classes in --main-dex-list, main dex capacity exceeded
此异常是说生成的第一个classes.dex文件中类超限了。。。。。。
解决此问题目前的一个思路是(已测试成功):
在build。gradle中添加一下配置内容
afterEvaluate {
tasks.matching {
it.name.startsWith('dex')
}.each { dx ->
if (dx.additionalParameters == null) {
dx.additionalParameters = []
}
//允许生成多个dex文件
dx.additionalParameters += '--multi-dex' // enable multidex
// 设置multidex.keep文件中class为第一个dex文件中包含的class,如果没有下一项设置此项无作用
dx.additionalParameters += "--main-dex-list=$projectDir/multidex.keep".toString()
//此项添加后第一个classes.dex文件只能包含-main-dex-list列表中class
dx.additionalParameters += '--minimal-main-dex'
}
}
当然,我们不能自己去一个一个添加classes.dex中的class,要不然还不得累死。。。。
multidex.keep文件中的内容通过以下方式获取:当运行项目报标题错误时,进入以下目录:
项目\build\intermediates\multi-dex\release(或debug)\maindexlist.txt
将maindexlist.txt中没有再application中初始化的类删除一部分之后,剩余的复制到multidex.keep文件中,将multidex.keep放到项目目录下就ok了。
multidex.keep中部分文件:
在解决完方法数超过65535的问题后,由于项目一直在更新增加代码,后来在使用android studio生成apk时会报出:
com.android.dex.DexException:Too many classes in --main-dex-list, main dex capacity exceeded
此异常是说生成的第一个classes.dex文件中类超限了。。。。。。
解决此问题目前的一个思路是(已测试成功):
在build。gradle中添加一下配置内容
afterEvaluate {
tasks.matching {
it.name.startsWith('dex')
}.each { dx ->
if (dx.additionalParameters == null) {
dx.additionalParameters = []
}
//允许生成多个dex文件
dx.additionalParameters += '--multi-dex' // enable multidex
// 设置multidex.keep文件中class为第一个dex文件中包含的class,如果没有下一项设置此项无作用
dx.additionalParameters += "--main-dex-list=$projectDir/multidex.keep".toString()
//此项添加后第一个classes.dex文件只能包含-main-dex-list列表中class
dx.additionalParameters += '--minimal-main-dex'
}
}
当然,我们不能自己去一个一个添加classes.dex中的class,要不然还不得累死。。。。
multidex.keep文件中的内容通过以下方式获取:当运行项目报标题错误时,进入以下目录:
项目\build\intermediates\multi-dex\release(或debug)\maindexlist.txt
将maindexlist.txt中没有再application中初始化的类删除一部分之后,剩余的复制到multidex.keep文件中,将multidex.keep放到项目目录下就ok了。
multidex.keep中部分文件:
android/media/ThumbnailUtils.class android/support/multidex/MultiDex$V14.class android/support/multidex/MultiDex$V19.class android/support/multidex/MultiDex$V4.class android/support/multidex/MultiDex.class
相关文章推荐
- PreparedStatement中in子句的处理
- 遭遇Reply from : TTL expired in transit.
- "TTL expired in transit" 具体解释第1/3页
- SQL SERVER中关于exists 和 in的简单分析
- SQL查询中in和exists的区别分析
- 在MySQL中创建带有IN和OUT参数的存储过程的方法
- IIS访问ASP页面时报错The requested resource is in use.的解决办法
- 探讨select in 在postgresql的效率问题
- js中for in语句的用法讲解
- Some tips of wmi scripting in jscript (1)
- Linux的获利之路
- Ajax in action 英文版配书源码 下载
- Select data from an Excel sheet in MSSQL
- SQL实现递归及存储过程中In()参数传递解决方案详解
- Mysql子查询IN中使用LIMIT应用示例
- Oracle In和exists not in和not exists的比较分析
- MySQL的FIND_IN_SET函数使用方法分享
- ERROR 1406 : Data too long for column 解决办法
- MySQL查询in操作 查询结果按in集合顺序显示
- IN&EXISTS与NOT IN&NOT EXISTS 的优化原则小结