- Android插件化開(kāi)發(fā)指南
- 包建強(qiáng)
- 1244字
- 2019-01-05 08:31:09
本書(shū)的結(jié)構(gòu)及內(nèi)容
全書(shū)分為三大部分,共22章。第1部分“預(yù)備知識(shí)”包括第1~5章,是進(jìn)行Android插件化編程的準(zhǔn)備知識(shí)。第2部分“解決方案”包括第6~16章,詳細(xì)介紹并分析了插件化編程的各種解決方案。第3部分“相關(guān)技術(shù)”包括第17~21章,介紹插件化編程的周邊技術(shù),并對(duì)紛繁復(fù)雜的插件化技術(shù)進(jìn)行了總結(jié)。
第1章介紹的是Android插件化的歷史,可以當(dāng)作小說(shuō)來(lái)讀,茶余飯后,地鐵站中就可以讀完。
第2章介紹Android底層知識(shí),涉及那些與Android插件化相關(guān)的知識(shí),比如Binder和AIDL, Android App的安裝流程和啟動(dòng)流程,ActivityThread, LoadedApk, Android四大組件的運(yùn)行原理。這一章篇幅較多,需要仔細(xì)研讀。其中,講到一個(gè)音樂(lè)播放器的例子,幫助大家更加深刻地認(rèn)識(shí)Android的四大組件。
第3章講反射,詳細(xì)介紹了構(gòu)造函數(shù)、方法、字段、泛型的反射語(yǔ)法。這章介紹了Java領(lǐng)域很火的一個(gè)開(kāi)源庫(kù)jOOR,可惜,它對(duì)Android的支持并不是很好,所以這章還介紹了我們自己封裝的RefInvoke類(lèi),這個(gè)類(lèi)將貫穿本書(shū),基本上所有源碼例子都會(huì)使用到它。
第4章講代理模式。這個(gè)模式在Android中最著名的實(shí)現(xiàn)就是Proxy.newProxyInstance方法。基于此,我們Hook了AMS和PMS中的一些方法。
第5章是第4章的延續(xù),仍然是基于Proxy.newProxyInstance方法,Hook了Activity的啟動(dòng)流程,從而可以啟動(dòng)一個(gè)沒(méi)有在AndroidManifest中聲明的Activity,這是插件化的核心技術(shù)之一。
第6章介紹了如何加載插件App,以及如何對(duì)插件化項(xiàng)目的宿主App和插件App同時(shí)進(jìn)行調(diào)試。說(shuō)到插件化編程,離不開(kāi)面向接口編程的思想,這章也花了很多筆墨介紹這個(gè)思想,以及具體的代碼實(shí)現(xiàn)。
第7章介紹了資源的加載機(jī)制,包括AssetManager和Resources,并給出了資源的插件化解決方案,從而為Activity的插件化鋪平了道路。另外還介紹了換膚技術(shù)的插件化實(shí)現(xiàn)。
第8章介紹了最簡(jiǎn)單的插件化解決方案,通過(guò)在宿主App的AndroidManifest中事先聲明插件中的四大組件。為了能讓宿主App隨意加載插件的類(lèi),這章介紹了合并dex的技術(shù)方案。
第9章到第12章介紹了Android四大組件的插件化解決方案。四大組件的生命周期各不相同,所以它們各自的插件化解決方案也都不同。
第13章、第14章介紹了Android插件化的靜態(tài)代理的解決方案。這是一種“牽線(xiàn)木偶”的思想,我們不用Hook太多Android系統(tǒng)底層的代碼。
第15章再次講到資源,這次要解決的是宿主和多個(gè)插件的資源id值沖突的問(wèn)題。這一章介紹了多種解決方案,包括思路分析、代碼示例。
第16章介紹一種古老的插件化解決方案,通過(guò)動(dòng)態(tài)替換Fragment的方式。
第17章介紹了App的降級(jí)解決方案。一旦插件化方案不可用,那么我們?nèi)匀豢梢允褂肏5,來(lái)替換任何一個(gè)App原生頁(yè)面。
第18章介紹了插件的混淆技術(shù)。有時(shí)候宿主App和插件App都會(huì)引用MyPluginLibrary這個(gè)類(lèi)庫(kù),這個(gè)公用類(lèi)庫(kù)是否要混淆,相應(yīng)有兩種不同的混淆方案。
第19章介紹了增量更新技術(shù)。這是插件化必備的技術(shù),從而保證插件的升級(jí),不需要從服務(wù)器下載太大的包。
第20章介紹了so的插件化解決方案。這章詳細(xì)介紹了so的加載原理,以及從服務(wù)器動(dòng)態(tài)加載so的方案,基于此,有兩種so的插件化解決方案。
第21章介紹了gradle-small這個(gè)自定義Gradle插件。這章是對(duì)第15章的補(bǔ)充,是另一種解決插件資源id沖突的方案。
第22章作為整本書(shū)的結(jié)尾,系統(tǒng)總結(jié)了Android插件化的各種解決方案。如果讀者能堅(jiān)持讀到這最后一章,可以幫助讀者鞏固這些知識(shí)。
- App草圖+流程圖+交互原型設(shè)計(jì)教程
- 產(chǎn)品經(jīng)理入門(mén)攻略
- Apache Pulsar原理解析與應(yīng)用實(shí)踐
- 產(chǎn)品眾包設(shè)計(jì)理論與方法
- 軟件測(cè)試從小白到高手
- Android應(yīng)用安全防護(hù)和逆向分析
- Swift從入門(mén)到精通(正式版)
- 搜索引擎與程序化廣告:原理、設(shè)計(jì)與實(shí)戰(zhàn)
- Unity 2017經(jīng)典游戲開(kāi)發(fā)教程:算法分析與實(shí)現(xiàn)
- 嵌入式軟件調(diào)試技術(shù)
- 內(nèi)容理解:技術(shù)、算法與實(shí)踐
- Spring in Action(第二版)中文版
- 深入淺出Spring Boot 3.x
- 云計(jì)算工程
- 瘋狂Java:突破程序員基本功的16課(修訂版)