1. 程式人生 > >Android外掛化的發展歷史

Android外掛化的發展歷史

2012年,AndroidDynamicLoader框架。通過動態載入不同的Fragement,把想換的頁面都換掉。我們也是在這個專案中第一次看到了如何通過addAssetPath來讀取外掛中的資源。

2013年,23Code。23Code提供了一個殼,在這個殼裡可以動態下載外掛,然後動態執行。可以在殼外編寫各種各樣的控制元件,放在這個框架下去執行。

2014年初,淘寶的Altas技術

2014年底,dynamic-load-apk專案。它使用代理模式,在宿主中用一個繼承自Activity的代理ProxyActivity來控制外掛中activity的生命週期。有興趣可以自己查閱一下。

2015年4月,OpenAltas

,後來改名為ACDD。這個框架參考了淘寶App的很多經驗,主要就是Hook的思想,同時,還首次提出來通過擴充套件AAPT來解決外掛與宿主的資源id衝突的問題。

2015年8月,DroidPlugin。這是Android外掛化中第二個里程碑式的專案,這個專案太牛了,能把任意的App都載入到宿主裡。可以基於這個框架寫一個宿主App,然後就可以把別人寫的App都當作外掛來載入。這個框架的功能的確很強大,但強大的代價就是要改寫很多Android系統的底層程式碼。

再之後就是百花齊放的時代了,GitHub上有很多外掛化框架,但這些框架影響都不大,我們這裡就略過了。

接下來登場的是熱修復技術。

2015年5月,iOS推出了JSPatch,JSPatch通過Runtime的機制,能迅速修復線上App任何一個類的任何一個方法。而當時的Android系統沒有能迅速替換的方式。

2015年9月,Andfix熱修復框架。

2015年10月,大眾點評做了一個專案,起名為Nuwa(女媧),主要思路跟Andfix差不多,都是解決Android的修復問題,能修復線上的任何一個方法。可惜後來沒有繼續維護。

2015年底,Small外掛化框架。是一個非常輕量級跨平臺的外掛框架,有完善的文件和專門的團隊維護。非常適合用來學習入門外掛化。以後我會專門寫部落格講解small框架的原理。