能搜索到这里的也不需要知道为什么会报Dex65536错误了,下面单刀直入直接上解决办法:
原理其实就是将不重要的jar包集中用ant打包成一个jar包,再用SDK自带工具dx.bat去将这个jar包编译成classes2.dex文件,在APP启动后动态加载这个分包dex
一.首先准备apache-ant-1.10.1.zip工具,后面会提供用到的工具(需要配置ANT的环境变量,自行百度搜索如何配置)
二.编写build.xml配置文件,将所需要合并的jar包写到里面
三.在项目libs包下Shift+右键进入命令行,执行命令:ant -buildfile D:\workspace\Fcbroker\Fcbroker\libs\build.xml
执行成功后会生成合并后的all.jar
四.然后到安卓SDK build-tool工具里使用dk.bat将合成的jar包编译成classes2.dex文件
执行命令:dx --dex --output=D:\workspace\Fcbroker\Fcbroker\libs\ classes2.dex D:\workspace\Fcbroker\Fcbroker\libs\all.jar
执行成功后会在libs文件夹下生成classes2.dex文件
五.将classes2.dex文件放置在项目src路径下
六.导入multidex库到项目,后面会提供下载
七.在项目的BaseApplication类里重写attachBaseContext方法,执行分包
八.在Java Build Path里将所合成的包的对勾取消掉,因为这些包已经在classes2.dex存在,无需再次打包进dex
九.运行程序,查看分包结果,先将apk文件右键解压出来,可以看到已被分成了两个dex
使用dex方法获取工具,可以看到现在主dex方法数明显减少了
下载地址: 点击打开链接
上次忘记发分包库了,这次补发:
链接: https://pan.baidu.com/s/1i5EM34L 密码: gnk4
最后要说一个重点,在APP启动时就马上要加载的jar包千万别进行合并分包,不然会报类找不到的错误,当然这个错误在高级点的手机上没有出现