1讥蟆、組件化選型結(jié)論
方案是Arouter+auto-register+自己造輪子補(bǔ)充
原因:arouter使用簡單棚点,可以做組件間解耦舔琅,
auto-register 解決了arouter加載組件是反射效率低下問題碗硬。原理asm修改字節(jié)碼
2扛或、其他組件方案對比
1绵咱、美團(tuán)貓眼電影android模塊化實(shí)戰(zhàn)
可以學(xué)習(xí)到的思想
1、無入侵式配置各種服務(wù)
采用serviceload
缺點(diǎn):
最重要一點(diǎn):無代碼示例
1熙兔、serviceload (SPI)對于用戶來講不易使用
2悲伶、無論spi還是arouter,都不能解決配置下沉到base住涉,不如使用arouter
3麸锉、最好解決方案還是"騰訊.api方案"
2、 Android徹底組件化demo發(fā)布
可以學(xué)習(xí)到思想:
1秆吵、代碼和資源隔離
2淮椰、組件單獨(dú)運(yùn)行和集成發(fā)布 ,提供gradle插件(采用)
3纳寂、借鑒采用javassit
缺點(diǎn):
1主穗、JIMI用戶不多
2、API調(diào)用暴露了很多底層細(xì)節(jié)毙芜,開發(fā)者用戶還需要反復(fù)看源代碼忽媒,才能清晰明白
3、core代碼寫得不夠潔癖
3腋粥、WMRouter:美團(tuán)外賣Android開源路由框架
美團(tuán)的博客:WMRouter:美團(tuán)外賣Android開源路由框架
美團(tuán)外賣開源路由框架 WMRouter 源碼分析
最初背景:產(chǎn)品希望通過后臺下發(fā)URI控制客戶端跳到指定頁面晦雨,從而實(shí)現(xiàn)靈活的運(yùn)營配置
優(yōu)點(diǎn):
基于URI開發(fā)的框架架曹,可靈活配置
自定義ServiceLoader,不錯的擴(kuò)展性,可以跨組件訪問數(shù)據(jù)(采用)
缺點(diǎn):
1闹瞧、靈活性強(qiáng)绑雄,反襯易用性不足
2、ServiceLoader奥邮,并不能真正意義解除依賴万牺,
還需要將Interfaces下沉的base,或者引用該moudle
總之,可以備選的洽腺,基于URI的優(yōu)秀的路由框架
4脚粟、使用簡單但功能強(qiáng)大的安卓組件化框架 CC
介紹網(wǎng)頁:https://qibilly.com/CC-website/
優(yōu)點(diǎn):
1、文檔全面介紹詳實(shí)(采用)
2蘸朋、組件間調(diào)用者(采用)
3核无、cc-register 采用asm,可以配合arouter(采用)
4藕坯、采用服務(wù)架構(gòu)团南,將組件間關(guān)系扁平化
缺點(diǎn):
1、集成太復(fù)雜
2炼彪、調(diào)用方式已慢,還不夠親民
3、代碼編寫霹购,暴露給用戶細(xì)節(jié)太多
4、gradle的配置朋腋,實(shí)在是難以讓人接受
5齐疙、跨組件調(diào)用,用不到RPC(AIDL)技術(shù)
6旭咽、RPC建議專門一個庫實(shí)現(xiàn)贞奋,例如餓了么Hermes
7、組件提供的功能太多穷绵,提供api越多轿塔,后期兼容性越差,關(guān)鍵核心類要采用final修飾仲墨,避免使用者有歧義
總之:非常好的總線框架勾缭,學(xué)習(xí)成本高,需要經(jīng)驗(yàn)
5目养、Apache Dubbo
-
軟件架構(gòu)
分布式系統(tǒng)學(xué)習(xí)筆記
https://blog.csdn.net/lchpersonal521/article/details/84107272
優(yōu)點(diǎn)
1俩由、分布式服務(wù),服務(wù)組件間隔離
2癌蚁、服務(wù)降級幻梯,服務(wù)發(fā)現(xiàn)兜畸,服務(wù)注冊
3、RPC+依賴注入+SPI+javassit
缺點(diǎn):
這套思想應(yīng)用安卓場景需要適配碘梢,參考CC
核心思想:依賴注入+SPI+RPC+javassit
6咬摇、Arouter
優(yōu)點(diǎn):
解除依賴,調(diào)用頁面服務(wù)煞躬,只需要知道對應(yīng)常量
使用簡單易懂肛鹏,用戶群體大,資料詳細(xì)
缺點(diǎn):
常量需要下沉到基礎(chǔ)庫
總之汰翠,采用Arouter方案
7龄坪、微信Android模塊化架構(gòu)重構(gòu)實(shí)踐
優(yōu)秀思想
①重塑模塊化,分解為三個目標(biāo)
1复唤、改變通信方式 : spi+".api化" 采用
2健田、重新設(shè)計(jì)模塊:重新設(shè)計(jì)代碼分層,強(qiáng)化職責(zé)和設(shè)計(jì)
3佛纫、約束代碼邊界:隔離思想妓局,采用pins工程
②代碼之外,架構(gòu)之內(nèi)
1呈宇、模塊負(fù)責(zé)人制度
2好爬、重構(gòu)與開發(fā)者心態(tài)
3、模塊劃分經(jīng)驗(yàn)之談
優(yōu)點(diǎn):指明思路和方向
缺點(diǎn):代碼需要自己實(shí)現(xiàn)
評價:采用微信的組件化思想甥啄,代碼邏輯需要因地制宜實(shí)現(xiàn)
自己手動編寫輪子Thor
組件化需要一套系統(tǒng)完整的方案存炮,來綜上所述的優(yōu)點(diǎn),也避免一些不易用的缺點(diǎn)蜈漓,為了實(shí)現(xiàn)這個目標(biāo)穆桂,最好的方案是Arouter+auto-register+自己造輪子補(bǔ)充
接下來一段時間,我要自己造輪子了融虽,吼吼~~~
Android架構(gòu)思考(模塊化享完、多進(jìn)程)
也推薦這篇文章
http://blog.spinytech.com/2016/12/28/android_modularization/