现在大部分开发应该都采用Android Studio工具做开发,但是也不乏有些比较苦逼的开发继续采用Eclipse做开发。
最近在和一个合作伙伴做API接口联调的时候,对方告诉我他们的游戏架构比较老旧目前依旧采用Eclipse做Android开发,所以我这边需要提供Eclipse版本的Android资源包。
好吧开始转入Eclipse,发现方法太多报错了,超过65535,这边只好对对jar做合并分包成classes.dex。
首先电脑安装ant,并创建build.xml文件内容如下所示
<?xml version="1.0" encoding="utf-8"?>
<project name="libs" basedir="/Users/xx/Desktop/sdkjar" default="makeSuperJar">
<target name="makeSuperJar" description="description">
<jar destfile="/Users/xx/Desktop/sdkjar/all.jar">
<zipfileset src="CustomService_1.2.3.jar"/>
<zipfileset src="okhttp-3.12.1.jar"/>
<zipfileset src="okio-1.15.0.jar"/>
</jar>
</target>
</project>
basedir="/Users/xx/Desktop/sdkjar"为jar包所在的路径。
destfile="/Users/xx/Desktop/sdkjar/all.jar"为合成后jar包的路径。
<zipfileset src="okhttp-3.12.1.jar"/>为参与合并jar包的资源
进入到build.xml文件所在的目录执行,ant -buildfile build.xml 命令即可实现对jar包的合并。
合并jar包后,需要采用 dx --dex --output=classes.dex(生成dex的路径和名称) source.jar(需要合并的jar包路径)
这样就完成了classes.dex文件的生成,为了使用这个dex,需要重命名为classes2.dex然后放到项目的src目录下即可完成编译。
这样就完成了通过分包classes.dex、classes2.dex ....等多个不同的dex文件解决了65535的问题。
除了上述操作还需要在项目的application attachBaseContext中添加 MultiDex.install(this);调用
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}