現在大部分開發應該都採用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=D:\classes.dex(生成dex的路徑和名稱) path\all.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);
}