app發展到必定規模,就面臨方法數超過65535的問題,前路怎麼走,是像美團或者微信那樣拆分紅多個dex仍是像淘寶,攜程那樣拆成多個bundle,怎麼向前走?html
沒有完美的架構,只有合適的架構。可是相似電商業務的app仍是比較適合作多bundle方案,由於一個app中包含不少業務,並且業務都在快速迭代,除了核心鏈路,業務之間沒有直接聯繫,這些業務都是由各個小團隊負責,拆分紅多bundle之後,加快了編譯速度和啓動速度,還能夠作懶加載,按需加載,動態部署,作多bundle方案須要團隊對app啓動過程,Activity如何加載,Resource資源加載,DexClassloader,OSGI等有詳細的瞭解,並且還須要對打包工具定製,須要詳細瞭解Android app打包流暢。這方面目前目前有兩個方案:android
1.攜程最近開源的:https://github.com/CtripMobile/DynamicAPK 實現簡單,不負責,代碼數量也很少,還包括了打包工具。git
2.另一個相似手淘Atlas架構的:https://github.com/bunnyblue/ACDD,比攜程的複雜,功能更強,支持so庫,Proxy等。github
騰訊系的App都是採用多dex方案,沒有在那邊上班過,不知道緣由,可是對比手淘的更新頻率和微信的更新頻率,也能理解爲何他們採用了多dex方案。多dex方案在實踐中也是須要去了解上述多bundle方案的一些Android底層技術,Google有一個官方的多dex支持方案,可是在具體實施過程當中會碰到一些問題,能夠參考美團和微信的方案,他們在這方面有較多的實踐:微信
美團:http://tech.meituan.com/mt-android-auto-split-dex.html架構
QQ空間終端團隊還有一個針對多dex方案的熱補丁技術:http://mp.weixin.qq.com/s?__biz=MzI1MTA1MzM2Nw==&mid=400118620&idx=1&sn=b4fdd5055731290eef12ad0d17f39d4a&scene=0#wechat_redirect工具
多dex熱補丁項目:https://github.com/dodola/HotFixspa