我們知道,再Android Studio中解決分包問(wèn)題是非常簡(jiǎn)單的,但是一搜eclipse中分包實(shí)現(xiàn),各種結(jié)果,大部分都是使用Gradle進(jìn)行編譯實(shí)現(xiàn)自動(dòng)分包单山,比如這篇 Eclipse中使用multidex解決分包
,配置一大堆,非常麻煩。
首先google官方是給出了解決方案的,詳細(xì)請(qǐng)看連接:
https://developer.android.google.cn/studio/build/multidex.html
最核心的技術(shù)就是:Dalvik 可執(zhí)行文件分包咐蝇。我們都知道安卓的虛擬機(jī)能執(zhí)行的就是 dex文件饭玲,dex 說(shuō)白了就是 class文件 通過(guò)工具進(jìn)行相應(yīng)的轉(zhuǎn)換的蝙茶。google 這個(gè)解決方案當(dāng)然是針對(duì)自己的親兒子 AndroidStudio 解決的扣唱,對(duì)于 eclipse 可不管。studio 本身用的就是 gradle 編譯的唐瀑。但是 eclipse 默認(rèn)是 ant 編譯的所以群凶,還需要配置 gradle ,但是 eclipse 配置 gradle 還是相對(duì)比較麻煩的介褥。所以我們還是基于 ant 進(jìn)行解決座掘。
下面是具體的解決思路:
1.將jar包生成 classes2.dex 將生成的 classes2.dex 至于工程目錄中的 src目錄 下。
如果有多個(gè)jar包可合并成一個(gè)柔滔,可使用eclipse插件fatjar或者其它方法合并溢陪。注意,再application里面就用到的jar包,必須放在主dex即lib目錄下,不然會(huì)找不到睛廊。
jar包 → dex可 參照我之前的文章 Android將jar包轉(zhuǎn)換為dex二進(jìn)制文件
2.從 lib目錄 下剔除用來(lái)合并的 jar 形真。但是剔除后為了能編譯通過(guò)我們得使用外部引用:通過(guò) bulidPath 下的 add external archives 引用被我們合并的之前的 jar。
我的做法是在src目錄下新建 external-jars 文件夾,把剔除的jar包放在這里超全,
再到本地項(xiàng)目目錄下找到
添加
<classpathentry kind="lib" path="external-jars/zxing.jar"/>
再clean一下,項(xiàng)目就不會(huì)報(bào)錯(cuò)了咆霜。
3.導(dǎo)入 mutildex 分包所需要的jar包。如圖:
然后在自定義的 application 類(lèi)中聲明載入dex文件的代碼MultiDex.install(this);
4.至此我們調(diào)試或者打包項(xiàng)目的時(shí)候?qū)⒉粫?huì)在出現(xiàn)65535的問(wèn)題嘶朱。如果依然存在可以合并更多的jar蛾坯。以此類(lèi)推。
最后需要注意:
1.在 application中 使用的 jar 不能通過(guò)分包的方式疏遏,否則會(huì)提示 classnotfound脉课。因此 application 中使用的jar還是存放于lib下。默認(rèn)是主dex即 classes.dex财异。
2.如果打包的jar需要更新倘零,那么得重新生成 classes 文件
3.classes 必須放置與 src根目錄,并且命名規(guī)范嚴(yán)格按照 classes2.dex戳寸、 classes3.dex 的方式以此類(lèi)推呈驶。否則會(huì)找不到不規(guī)則命名的jar包。