解决方法<br>
1.代码精简<br>
删除无用代码,删除model里的get和set方法,减少外部库的应用门等等<br>
2.借助开源解决方案(DexKnife开源项目)<br>
1.在项目里的build.gradle文件里配置<br>
classpath 'com.ceabie.dextools:gradle-dexknife-plugin:1.5.9'
2、在运行模块里的build.gradle文件里配置
apply plugin: 'com.android.application'
apply plugin: 'com.ceabie.dexnkife'
3.运行模块根目录增加dexknife.txt文件
# 全局过滤, 如果没设置 -filter-suggest 并不会应用到 建议的maindexlist.
# 如果你想要某个包路径在maindex中,则使用 -keep 选项,即使他已经在分包的路径中.
-keep android.support.v4.view.**
# 这条配置可以指定这个包下类在第二dex中.
android.support.v?.**
# 使用.class后缀,代表单个类.
-keep android.support.v7.app.AppCompatDialogFragment.class
# 不包含Android gradle 插件自动生成的miandex列表.
-donot-use-suggest
-split **
# 将 全局过滤配置应用到 建议的maindexlist中, 但 -donot-use-suggest 要关闭.
#-filter-suggest
# 不进行dex分包, 直到 dex 的id数量超过 65536.
-auto-maindex
# dex 扩展参数, 例如 --set-max-idx-number=50000
# 如果出现 DexException: Too many classes in --main-dex-list, main dex capacity exceeded,则 需要调大数值
-dex-param --set-max-idx-number=65536
# 显示miandex的日志.
-log-mainlist
# 如果你只想过滤 建议的maindexlist, 使用 -suggest-split 和 -suggest-keep.
# 如果同时启用 -filter-suggest, 全局过滤会合并