官术网_书友最值得收藏!

本書(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í)。

主站蜘蛛池模板: 郓城县| 开原市| 靖安县| 神农架林区| 德庆县| 黑龙江省| 简阳市| 阳高县| 孟连| 新竹县| 阿城市| 稷山县| 义乌市| 白城市| 平顺县| 堆龙德庆县| 徐汇区| 广西| 股票| 德格县| 雷波县| 华安县| 盐池县| 五峰| 桂平市| 凌源市| 林州市| 石台县| 五台县| 黄梅县| 永和县| 夹江县| 丰宁| 启东市| 南充市| 若羌县| 呼玛县| 阳西县| 西贡区| 大邑县| 皋兰县|