常見android插件框架對比

1.Dynamic-Load-Apk

?Dynamic-Load-Apk是由android大神任玉剛主導(dǎo)開發(fā)的插件框架,大家有可能閱讀過他寫的一本非常有名的書《Android開發(fā)藝術(shù)探索》。它是一個比較老的插件化框架,

但是目前已經(jīng)很長時間沒有更新了,途牛用的就是這個插件化框架。Dynamic-Load-Apk是很早的插件化框架,并且?guī)в星秩胄?,?yōu)缺點(diǎn)如下:

優(yōu)點(diǎn):

? 1.插件不依賴宿主,對宿主開發(fā)者透明,提供三種依賴方式;

? 2.宿主和插件可以頻繁交互,啟動時間短;

缺點(diǎn):

? 1.插件apk必須實(shí)現(xiàn)DLBasePluginActivity,屬于侵入式的,以及不支持service;

? 2.宿主調(diào)用插件和插件內(nèi)部的相互調(diào)用都要使用DL提供的方法,而不能使用Android原生的api,例如:啟動Activity;

? 3.插件開發(fā)有一套規(guī)定,因此造成插件開發(fā)門檻高,學(xué)習(xí)成本高;

2.DroidPlugin

DroidPlugin是由360手機(jī)助手團(tuán)隊(duì)在16年開源的插件框架,已經(jīng)在360手機(jī)助手上使用,它可以在無需安裝、修改的情況下運(yùn)行APK文件,此機(jī)制對改進(jìn)大型APP的架構(gòu)。

實(shí)現(xiàn)多團(tuán)隊(duì)協(xié)作開發(fā)具有一定的好處,其實(shí)VirtualAPK等開發(fā)框架一樣具有這樣的優(yōu)勢,由于360團(tuán)隊(duì)在后期推出了RePlugin這套新的插件框架,所以目前這套插件框架被RePlugin取代,

優(yōu)缺點(diǎn)如下:

優(yōu)點(diǎn):

1.宿主和插件完全隔離,插件不依賴宿主,可以獨(dú)立安裝運(yùn)行;

2.低入侵設(shè)計,插件不需要繼承任何類;

3.插件apk和普通apk一樣的,所以插件開發(fā)沒有門檻,開發(fā)的時候集成簡單;

缺點(diǎn):

1.插件啟動速度比較慢;

2.無法在插件中發(fā)送具有自定義資源的Notification;

3.無法在插件中注冊一些具有特殊Intent Filter的Service、Activity、BroadcastReceiver、ContentProvider等組件以供Android系統(tǒng)、已經(jīng)安裝的其他APP調(diào)用;

4.缺乏對Native層的Hook,對某些帶native代碼的apk支持不好,可能無法運(yùn)行;

3.VirtualApk

VirtualAPK是滴滴出行自研的一款優(yōu)秀的插件化框架,是該團(tuán)隊(duì)在17年6月3號開源的,該框架通過將業(yè)務(wù)模塊插件化,可隨時更新插件來發(fā)布新功能,具備版本隨時發(fā)布的能力。

VirtualAPK對插件沒有額外的約束,原生的apk即可作為插件。插件工程編譯生成apk后,即可通過宿主App加載,每個插件apk被加載后,都會在宿主中創(chuàng)建一個單獨(dú)的LoadedPlugin對象。

通過這些LoadedPlugin對象,VirtualAPK就可以管理插件并賦予插件新的意義,使其可以像手機(jī)中安裝過的App一樣運(yùn)行,優(yōu)缺點(diǎn)如下:

優(yōu)點(diǎn):

1.支持幾乎所有的Android特性,四大組件均不需要在宿主manifest中預(yù)注冊,每個組件都有完整的生命周期;

2.Native層的Hook,插件中的so庫能夠正常使用;

3.兼容市面上幾乎所有的Android手機(jī),這一點(diǎn)已經(jīng)在滴滴出行客戶端中得到驗(yàn)證;

4.入侵極低,插件開發(fā)等同于原生開發(fā);

5.插件的構(gòu)建過程簡單,通過Gradle插件來完成插件的構(gòu)建,整個過程對開發(fā)者透明;

缺點(diǎn):

1.需要在插件中聲明使用插件的宿主,所以在一定程度上影響了插件的獨(dú)立性;

2.對資源、application和context,插件和宿主的共享存在各種問題;

4.RePlugin

RePlugin是360安全衛(wèi)士團(tuán)隊(duì),在17年開源的插件框架,據(jù)17年360安全衛(wèi)士團(tuán)隊(duì)介紹,他們的安卓客戶端83%的功能都實(shí)現(xiàn)了插件化,并且成功的為2億用戶提供了服務(wù),17年全年他們發(fā)布達(dá)

將近600次,平均一天2次的發(fā)版,也是完全得力于這套插件框架,目標(biāo)這套框架還在持續(xù)的更新中,優(yōu)缺點(diǎn)如下:

優(yōu)點(diǎn):

1.支持幾乎所有的Android特性,四大組件均不需要在宿主manifest中預(yù)注冊,支持幾乎所有單品app可以利用到的特性如AppCompat,databing等等;

2.及其穩(wěn)定:hook點(diǎn)僅有一處(classLoader),崩潰率低于萬分之一,很好的兼容了市面上的android rom;

3.擁有成熟的插件管理方案,支持插件的升級,安裝,版本迭代,進(jìn)程間通信,協(xié)議版本等等;

4.入侵極低,插件開發(fā)等同于原生開發(fā);

5.集成相對來說比較簡單;

缺點(diǎn):

1.對資源、application和context,插件和宿主的共享存在各種問題;

5.總結(jié)

由于自己還沒有系統(tǒng)的調(diào)研各個插件框架,所以上面的每個插件框架的優(yōu)缺點(diǎn),其實(shí)都是在網(wǎng)上查資料整理的。對于選擇哪種插件框架,我覺得后期會選擇RePlugin這個框架,原因如下:1.從github上面

代碼的更新速度來看,360團(tuán)隊(duì)一直在很好的維護(hù)這個項(xiàng)目;2.相對于VirtualAPK,RePlugin集成更加簡單,插件的開發(fā)也更加的獨(dú)立, 對android系統(tǒng)特性的支持也更加好。而且我傾向于下載github上

Replugin的源碼做第二次開發(fā),因?yàn)?,每個公司都可能會涉及一些定制的開發(fā)或者針對于插件的統(tǒng)計需求,我們直接在開源代碼的基礎(chǔ)上做二次開發(fā),可以為我們的移動端框架帶來更多的可能性。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容