博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Too many classes in --main-dex-list
阅读量:5932 次
发布时间:2019-06-19

本文共 1224 字,大约阅读时间需要 4 分钟。

hot3.png

在解决完方法数超过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.classandroid/support/multidex/MultiDex$V14.classandroid/support/multidex/MultiDex$V19.classandroid/support/multidex/MultiDex$V4.classandroid/support/multidex/MultiDex.class

转载于:https://my.oschina.net/u/992018/blog/482963

你可能感兴趣的文章
结对项目 sport club(二)
查看>>
iOS开发UIView.h简介
查看>>
Linux U盘 启动盘
查看>>
文件的上传
查看>>
【robotframework安装】MAC安装
查看>>
传说中的数据结构 栈
查看>>
Codeforces 861 C Did you mean... 模拟 暴力
查看>>
C++基础--STL基本通用函数操作集合
查看>>
延迟加载与单例模式
查看>>
文件写入补充(序列化对象写入)
查看>>
作用域和闭包
查看>>
IP地址分类(A类 B类 C类 D类 E类)
查看>>
[2747]循环节(next数组) SDUT
查看>>
mybatis自定义结果集映射规则
查看>>
Oracel中的NVL函数
查看>>
Python学习之模块进程函数详解
查看>>
mac系统命令行窗口输入javac命令,输出中文乱码得问题
查看>>
C语言读写伯克利DB 4
查看>>
JS单元测试框架:QUnit
查看>>
Kafka1 利用虚拟机搭建自己的Kafka集群
查看>>