Small插件化實(shí)戰(zhàn)總結(jié)

atlas躯畴、replugin茫藏、small選擇

??在實(shí)現(xiàn)比特牛牛項(xiàng)目插件化之前误趴,花了較長一段時間在插件化方案選擇上,體驗(yàn)了atlas务傲、replugin凉当、small。應(yīng)該原有項(xiàng)目是模塊化的項(xiàng)目售葡,因此需求是每個模塊都能實(shí)現(xiàn)動態(tài)更新看杭,核心的業(yè)務(wù)插件不會太大,每次更新替換原有插件挟伙。
??replugin生成的插件不夠純粹楼雹,他會把v7的包相關(guān)class和資源打進(jìn)去導(dǎo)致包變得很大(超過1m),還很容易到時方法超過65536尖阔。atlas雖然是個不錯的選擇贮缅,但它動態(tài)部署時需要打差異包,強(qiáng)調(diào)的是熱修復(fù)介却,版本更新時工作量大携悯。而small打包簡單方便,相關(guān)資源不會重復(fù)打進(jìn)插件筷笨,核心的業(yè)務(wù)插件會很小憔鬼,只有幾百k,更新插件也簡單胃夏。

small使用注意事項(xiàng)

small的使用示例可以https://github.com/wequick/Small
獲取轴或,具體教程可以參照官網(wǎng)。如果有需要仰禀,先下載官方示例運(yùn)行一遍照雁。這里說一下幾個注意事項(xiàng):
1、每個module命名要規(guī)范,業(yè)務(wù)插件模塊需要用app.xxx命名饺蚊,并且要改為application類型(apply plugin: 'com.android.application')萍诱。公共庫插件以lib.xxx命名,要打入主殼apk的模塊(宿主分身)資源可以放到app+xxx命名的模塊(會被所有其他模塊引入)污呼。當(dāng)然也可以通過bundle.json定義每個module的type類型來區(qū)分插件類型裕坊。
2、如果公共庫里的自定義組件需要在ConstraintLayout布局中使用燕酷,就要把ConstraintLayout的依賴加到公共庫插件里籍凝。不能放到app+xxx(宿主分身下),否則讀取自定義屬性會有問題苗缩。
3饵蒂、自定義屬性declare-styleable的name屬性不要和庫重復(fù),否則讀取屬性會失敗酱讶。
4退盯、轉(zhuǎn)場動畫和通知欄圖標(biāo)要放入宿主分身。
5泻肯、ConstraintLayout中的group組件無效(可以自定義group)
6渊迁、ARouter無效(可以自己實(shí)現(xiàn)一個簡易版ARouter框架替換,見上篇
7软免、業(yè)務(wù)插件布局文件定義的id不能和公共庫插件的id一樣宫纬,否則在運(yùn)行時會報NoSuchFieldError。(如果一定要重復(fù)的話膏萧,見Small重復(fù)id解決方法)

實(shí)戰(zhàn)總結(jié)

??最終漓骚,項(xiàng)目插件化還是比較圓滿的完成了。能夠通過配置文件動態(tài)更新插件列表榛泛,根據(jù)插件版本動態(tài)更新蝌蹂。需要頻繁更新的插件不大只有300k。如果需要引入大的資源曹锨,后面還可以增加插件喷众。兼容性方面窃祝,Android4.4(紅米)逮刨、Android7.0(vivo贪壳、OPPO)、Android8.0(華為)椒楣,Android 9.0 beta(pixel)都測試通過给郊。回頭看重構(gòu)難度方面捧灰,因?yàn)橹熬褪前凑漳K化開發(fā)的淆九,所以很好重構(gòu),并且small是兼容kotlin的。當(dāng)然也有一些坑點(diǎn)炭庙,如ARouter不支持啊饲窿,Glide不支持本地資源,還有最大的id重復(fù)問題焕蹄。不過還是找到了相關(guān)解決方案逾雄。總的來說擦盾,small對代碼極致裁剪嘲驾,打包方便淌哟,它也是我用完atlas迹卢、replugin等其他插件化的最終選擇。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末徒仓,一起剝皮案震驚了整個濱河市腐碱,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌掉弛,老刑警劉巖症见,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異殃饿,居然都是意外死亡谋作,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進(jìn)店門乎芳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來遵蚜,“玉大人,你說我怎么就攤上這事奈惑】跃唬” “怎么了?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵肴甸,是天一觀的道長寂殉。 經(jīng)常有香客問我,道長原在,這世上最難降的妖魔是什么友扰? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮庶柿,結(jié)果婚禮上村怪,老公的妹妹穿的比我還像新娘。我一直安慰自己澳泵,他們只是感情好实愚,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般腊敲。 火紅的嫁衣襯著肌膚如雪击喂。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天碰辅,我揣著相機(jī)與錄音懂昂,去河邊找鬼。 笑死没宾,一個胖子當(dāng)著我的面吹牛凌彬,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播循衰,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼铲敛,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了会钝?” 一聲冷哼從身側(cè)響起伐蒋,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎迁酸,沒想到半個月后先鱼,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡奸鬓,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年焙畔,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片串远。...
    茶點(diǎn)故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡宏多,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出抑淫,到底是詐尸還是另有隱情绷落,我是刑警寧澤,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布始苇,位于F島的核電站砌烁,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏催式。R本人自食惡果不足惜函喉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望荣月。 院中可真熱鬧管呵,春花似錦、人聲如沸哺窄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至坷襟,卻和暖如春奸柬,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背婴程。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工廓奕, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人档叔。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓桌粉,卻偏偏與公主長得像,于是被迫代替她去往敵國和親衙四。 傳聞我的和親對象是個殘疾皇子铃肯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評論 2 348

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