剛剛終于寫完了插件開發的最后一篇文章,下面就來總結一下,關于Android中插件篇從去年的11月份就開始規劃了,主要從三個方面去解讀Android中插件開發原理。說白了,插件開發的原理就是:動態加載技術。但是我們在開發插件的過程中可能會遇到很多問題,所以這里就分為三篇文章進行解讀的,而且也是循序漸進,解決了插件開發過程中可能會遇到的問題,不過這三篇的基礎還是動態加載技術。
第一、插件開發基礎篇:動態加載技術解讀
http://blog.csdn.net/jiangwei0910410003/article/details/17679823
這篇文章主要介紹了Android中的DexClassLoader類的功能,以及我們如何使用動態加載技術,為何要使用動態加載技術等問題的解釋,最開始的時候,我們就是使用這個類進行功能模塊的剝離,讓一些模塊放到指定的jar/dex/apk中,然后去動態加載,這樣做的好處是,減小包的大小,功能會更加靈活。
技術點:DexClassLoader的源碼解讀,使用
第二、插件開發開篇:類加載器分析
http://blog.csdn.net/jiangwei0910410003/article/details/41384667
這篇文章主要介紹了Android中主要的兩個類加載器:PathClassLoader和DexClassLoader,他們的區別,聯系,用法等問題,以及我們在制作插件的過程中會遇到哪些常見的問題。這篇文章也是后續兩篇文章的基礎,因為如果不了解這兩個類的話,我們將無法進行后續的操作。
技術點:PathClassLoader類和DexClassLoader類的源碼解讀,他們之間的卻別和聯系
第三、插件開發中篇:資源加載問題(換膚原理解析)
http://blog.csdn.net/jiangwei0910410003/article/details/47679843
這篇文章主要通過現在一些應用自帶的換膚技術的解讀來看看,在開發插件的過程中如何解決一些資源加載上的問題,這個問題為何要單獨拿出來解釋,就是因為他涉及的知識很多,也是后面一篇文章的基礎,我們在需要加載插件中的資源文件的時候。改如何處理。這里都做了詳細的解釋。同時有了這個技術之后,我們就可以實現應用的換膚開發了。
技術點:動態加載資源,AssetManager類的源碼解讀
第四、插件開發終極篇:動態加載Activity(免安裝運行程序)
http://blog.csdn.net/jiangwei0910410003/article/details/48104455
這篇文章主要是講解了如何加載插件中的Activity。從而實現免安裝運行程序,同時這篇文章也是對前三篇文章知識的綜合使用。下載很多應用都會使用到插件技術,因為包的大小和一些功能的優先級來決定哪些模塊可以制作成插件。這篇文章還介紹了兩種方式去動態加載Activity.這兩種方式各有各的好處和壞處。
技術點:兩種方式加載Activity,LoadedApk類和ActivityThread類的源碼解讀
總結
本身Android中的動態加載技術就很吃香,我剛剛接觸到這個技術的時候,正好是我大學畢業那年2013年。當時我們需要做聚合廣告SDK,所以需要對各家廣告做處理,使用動態加載的技術來加載各家廣告的SDK。第一次接觸到動態加載的時候,還是很興奮的,因為感覺。代碼還可以這么寫。功能的剝離那么好。所以很是癡迷這個技術。后來只是因為個人興趣,就開始深入研究一下插件開發的技術,當然本質還是動態加載,只是需要解決一個特定的問題。現在也有很多大牛寫了一些框架,個人感覺最好的還是這個哥們寫的框架:
https://github.com/Qihoo360/DroidPlugin
哈哈,看名字就知道是360的,哎,不得不佩服國內技術研究啥的360公司可以算是比較牛逼的。
當然我相信,隨著時間的推移,肯定還會有更多的牛人研究這個技術,開發出更加完善的框架,我就很期待呀。
更多內容:點擊這里
關注微信公眾號,最新Android技術實時推送