Android插件化原理解析——概要

原文地址:understand-plugin-framework

2015年是Android插件化技術突飛猛進的一年珠月,隨著業(yè)務的發(fā)展各大廠商都碰到了Android Native平臺的瓶頸:

從技術上講,業(yè)務邏輯的復雜導致代碼量急劇膨脹楔敌,各大廠商陸續(xù)出到65535方法數(shù)的天花板啤挎;同時,運營為王的時代對于模塊熱更新提出了更高的要求卵凑。

在業(yè)務層面上庆聘,功能模塊的解耦以及維護團隊的分離也是大勢所趨;各個團隊維護著同一個App的不同模塊勺卢,如果每個模塊升級新功能都需要對整個app進行升級伙判,那么發(fā)布流程不僅復雜而且效率低下;在講究小步快跑和持續(xù)迭代的移動互聯(lián)網(wǎng)必將遭到淘汰黑忱。

H5和Hybird可以解決這些問題宴抚,但是始終比不上native的用戶體驗;于是甫煞,國外的FaceBook推出了react-native菇曲;而國內(nèi)各大廠商幾乎都選擇純native的插件化技術∥J可以說羊娃,Android的未來必將是react-native和插件化的天下。

react-native資料很多埃跷,但是講述插件化的卻鳳毛菱角蕊玷;插件化技術聽起來高深莫測,實際上要解決的就是兩個問題:

代碼加載

資源加載

代碼加載

類的加載可以使用Java的ClassLoader機制弥雹,但是對于Android來說垃帅,并不是說類加載進來就可以用了,很多組件都是有“生命”的剪勿;因此對于這些有血有肉的類贸诚,必須給它們注入活力,也就是所謂的組件生命周期管理

另外酱固,如何管理加載進來的類也是一個問題械念。假設多個插件依賴了相同的類,是抽取公共依賴進行管理還是插件單獨依賴龄减?這就是ClassLoader的管理問題

資源加載

資源加載方案大家使用的原理都差不多班眯,都是用AssetManager的隱藏方法addAssetPath;但是署隘,不同插件的資源如何管理?是公用一套資源還是插件獨立資源磁餐?共用資源如何避免資源沖突?對于資源加載诊霹,有的方案共用一套資源并采用資源分段機制解決沖突(要么修改aapt要么添加編譯插件)亦歉;有的方案選擇獨立資源畅哑,不同插件管理自己的資源荠呐。

目前國內(nèi)開源的較成熟的插件方案有DLDroidPlugin;但是DL方案僅僅對Frameworl的表層做了處理砂客,嚴重依賴that語法,編寫插件代碼和主程序代碼需單獨區(qū)分鞠值;而DroidPlugin通過Hook增強了Framework層的很多系統(tǒng)服務,開發(fā)插件就跟開發(fā)獨立app差不多彤恶;就拿Activity生命周期的管理來說,DL的代理方式就像是牽線木偶声离,插件只不過是操縱傀儡而已芒炼;而DroidPlugin則是借尸還魂术徊,插件是有血有肉的系統(tǒng)管理的真正組件本刽;DroidPlugin Hook了系統(tǒng)幾乎所有的Sevice,欺騙了大部分的系統(tǒng)API;掌握這個Hook過程需要掌握很多系統(tǒng)原理子寓,因此學習DroidPlugin對于整個Android FrameWork層大有裨益暗挑。

接下來的一系列文章將以DroidPlugin為例講解插件框架的原理,揭開插件化的神秘面紗斜友;同時還能幫助深入理解Android Framewrok炸裆;主要內(nèi)容如下:

Hook機制之動態(tài)代理

Hook機制之Binder Hook

Hook機制之AMS&PMS

插件的廣播機制,靜態(tài)廣播非靜態(tài)

Service組件的管理蝙寨,占坑和Hook

ContentProvider的管理

插件加載解析之自定義包管理服務(PackageManager)

插件進程管理機制(ActivityMAnager)

插件機制之資源管理

DroidPlugin插件通信機制

DroidPlugin框架缺陷

不同插件框架方案對比

插件化的未來

另外晒衩,對于每一章內(nèi)容都會有詳細的demo,具體見understand-plugin-framework墙歪;喜歡就點個關注吧~定期更新,敬請期待虹菲!

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末靠胜,一起剝皮案震驚了整個濱河市浪漠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌霎褐,老刑警劉巖址愿,帶你破解...
    沈念sama閱讀 216,843評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件冻璃,死亡現(xiàn)場離奇詭異响谓,居然都是意外死亡,警方通過查閱死者的電腦和手機省艳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,538評論 3 392
  • 文/潘曉璐 我一進店門娘纷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人跋炕,你說我怎么就攤上這事赖晶。” “怎么了辐烂?”我有些...
    開封第一講書人閱讀 163,187評論 0 353
  • 文/不壞的土叔 我叫張陵遏插,是天一觀的道長。 經(jīng)常有香客問我棉圈,道長涩堤,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,264評論 1 292
  • 正文 為了忘掉前任分瘾,我火速辦了婚禮胎围,結果婚禮上吁系,老公的妹妹穿的比我還像新娘。我一直安慰自己白魂,他們只是感情好汽纤,可當我...
    茶點故事閱讀 67,289評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著福荸,像睡著了一般蕴坪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上敬锐,一...
    開封第一講書人閱讀 51,231評論 1 299
  • 那天背传,我揣著相機與錄音,去河邊找鬼台夺。 笑死径玖,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的颤介。 我是一名探鬼主播梳星,決...
    沈念sama閱讀 40,116評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼滚朵!你這毒婦竟也來了冤灾?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,945評論 0 275
  • 序言:老撾萬榮一對情侶失蹤辕近,失蹤者是張志新(化名)和其女友劉穎韵吨,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體移宅,經(jīng)...
    沈念sama閱讀 45,367評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡学赛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,581評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了吞杭。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,754評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡变丧,死狀恐怖芽狗,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情痒蓬,我是刑警寧澤童擎,帶...
    沈念sama閱讀 35,458評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站攻晒,受9級特大地震影響,放射性物質發(fā)生泄漏芯砸。R本人自食惡果不足惜双揪,卻給世界環(huán)境...
    茶點故事閱讀 41,068評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望渴邦。 院中可真熱鬧谋梭,春花似錦、人聲如沸站欺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,692評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蓬豁。三九已至地粪,卻和暖如春蟆技,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背眶蕉。 一陣腳步聲響...
    開封第一講書人閱讀 32,842評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留厘贼,地道東北人圣拄。 一個月前我還...
    沈念sama閱讀 47,797評論 2 369
  • 正文 我出身青樓嘴秸,卻偏偏與公主長得像泰鸡,于是被迫代替她去往敵國和親谤辜。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,654評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 2015年是Android插件化技術突飛猛進的一年哮奇,隨著業(yè)務的發(fā)展各大廠商都碰到了Android Native平臺...
    weishu閱讀 2,247評論 0 21
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,085評論 25 707
  • 本文轉自:Android博客周刊專題之#插件化開發(fā)# 原文作者:陸鎮(zhèn)生_Jomeslu 本人最近研究插件化饭耳, 偶然...
    Aegis閱讀 35,426評論 25 410
  • 作文串述,兩個字像是被施了魔咒纲酗。教師不知道怎么教,學生不知道怎么寫新蟆。是真的沒有任何方法可以進行作文教學嗎觅赊?難道作文真的...
    蝶化文瀾閱讀 3,331評論 3 5
  • 文/康澤 平靜的生活突然被一場風暴摧毀,我被一股激流卷進了漩渦琼稻。 天旋地轉吮螺,該前往的道路失去了方向。我被拋到天上帕翻,...
    追夕陽的人閱讀 842評論 0 4