如今SDK開發(fā)(插件化)越來越普遍,使用過程中若出現(xiàn)隱形bug,或者小的需求變更,這時就可以使用動態(tài)加載,熱補丁技術(shù)來實現(xiàn)。
實現(xiàn)原理: 利用DexClassloader.loadclass實現(xiàn)
實現(xiàn)步驟:
1.將插件模塊編譯生成jar后,利用命令dx工具打包生成二進制的jar包(暫命名為new.jar)。
2.新建一個lib工程(暫時命名為Module A),此lib工程主要實現(xiàn)兩個功能:
(1)對客戶提供接口來調(diào)用new.jar中相應(yīng)的功能。
(2)內(nèi)部利用DexClassloader.loadclass來加載相應(yīng)的類,實現(xiàn)客戶需要的功能。
3.將new.jar添加到Module A的asserts目錄下,配置build.gradle生成帶assets文件夾的jar包.
具體實現(xiàn)參考文章:
配置build.gradle生成帶assets文件夾的jar包
4.將(3)中生成的jar包放入到具體工程libs下即可引用new.jar中包括的功能。