原理其实就是将不重要的jar包集中用ant打包成一个jar包,再用SDK自带工具dx.bat去将这个jar包编译成classes2.dex文件,在APP启动后动态加载这个分包dex
1.首先准备apache-ant-1.10.1.zip工具,后面会提供用到的工具(需要配置ANT的环境变量,自行百度搜索如何配置)
2.编写base.xml配置文件,将所需要合并的jar包写到里面
<?xml version="1.0" encoding="utf-8"?>
<project name="libs" basedir="E:\ANT_jar" default="makeSuperJar">
<target name="makeSuperJar" description="description">
<jar destfile="libs.jar">
<zipfileset src="alipaySdk-20151112.jar"/>
<zipfileset src="android-async-http-1.4.8.jar"/>
<zipfileset src="AMap_Location_V2.7.0_20160726.jar"/>
<zipfileset src="android-custom-vg.2.6.0.jar"/>
<zipfileset src="commons-net-3.3.jar"/>
<zipfileset src="gson-2.1.jar"/>
<zipfileset src="jcore-android_v1.1.3.jar"/>
<zipfileset src="mta-sdk-1.6.2.jar"/>
<zipfileset src="paypaymeny.jar"/>
<zipfileset src="UPPayAssistEx.jar"/>
<zipfileset src="UPPayPluginExPro.jar"/>
<zipfileset src="wftsdk5.0.jar"/>
</jar>
</target>
</project>
这里你只需要改下你的basedir(base.xml文件的绝对路径)目录地址,destfile输出文件的名字和zipfileset你需要合并的jar即可
这里一定要注意上面的配置文件和要合并的包在同一个目录下,不然会报无法找到project all的错
3、准备条件做好了以后,打开dos,输入ant -buildfile E:\ANT_jar\base.xml 这时如果成功了就会在E:\ANT_jar文件夹里出现libs.jar包
4、将打好jar包 项目–右键–Build Path –Configure Build Path — Libraries —AddExternal JARs导入,删除以前libs下面的包,前提是这些包都在2中xml里有
5、生成dex文件,先用dos进入到sdk\build-tools\21.0.0目录下,后面的21.0.0是可以不同的,然后输入dx –dex –output=D:\classes.dex E:\ANT_jar\libs.jar ,这里libs.jar 是3生成的jar包,成功了就会生成classes.dex文件在D盘根目录下,将文件重命名为classes2.dex直接复制到项目src目录即可。
6、在项目的BaseApplication类里重写attachBaseContext方法,执行分包
public class MyApplication extends Application {
@Override
protected void attachBaseContext(Context base) {
// TODO Auto-generated method stub
super.attachBaseContext(base);
MultiDex.install(this);
}
@Override
public void onCreate() {
super.onCreate();
}
}
7、OK,这里到执行还差重要的一步了就是导入MutiDex类库
我的解决方案是在src下新建相同目录,然后把相应的文件拷贝进去就好了,
下载完成直接拷贝进去就可以了
最后要说一个重点,在APP启动时就马上要加载的jar包千万别进行合并分包,不然会报类找不到的错误
java.lang.IllegalArgumentException: no dialog with id 1 was ever shown via Activity#showDialog
当然这个错误在高级点的手机上没有出现
参考博文:http://blog.csdn.net/qq_19764133/article/details/54020508
http://m.blog.csdn.net/qq_35213388/article/details/78143343