android 熱修復 HotFix 混淆apk生成patch包方案

android 熱修復框架目前瞭解的有qq空間分包方案的HotFix 和Nuwa,還有阿里開源的AndFix和Dexposed.
android

https://github.com/dodola/HotFixgit

https://github.com/jasonross/Nuwagithub

https://github.com/alibaba/AndFixwindows

https://github.com/alibaba/dexposedapp

關於項目的原理能夠看下兩位大神的博客學習下:
框架

http://blog.csdn.net/lmj623565791/article/details/49883661 eclipse

http://blog.csdn.net/qxs965266509/article/details/50390325工具

因爲AndFix只能更改類中的方法實現,而Dexposed目前還不支持Art(5.0在測試中),學習

因此研究了一下HotFix及Nuwa的實現(dalvik)。測試

HotFix及Nuwa的實現原理基本一致,都是在Application中將patch包寫到第一個dex文件中而後加載修改後的類。因爲Nuwa的patch包按照文檔說明的流程本人未實現,因此着重研究了下HotFix的實現。

HotFix 文檔中只是給出了一個解決混淆的方案,未註明流程,下面是通過測試成功的一個打混淆patch包的流程:

一、在第一次打包apk的時候須要在混淆文件中加入一行代碼,輸出混淆先後的映射:

mapping.txt

二、打包apk成功後,會在build\outputs\mapping下生成一個mapping文件,此文件須要保持,之後打包混淆patch須要此文件。

三、將修改的類使用eclipse打包jar(注:修改的類不能是在Application中初始化的類)

四、使用android-sdk-windows\tools\proguard\bin\proguardgui.bat 工具對jar包進行混淆

    混淆配置文件就使用打包apk時的配置文件,工具的Obfuscation--Apply mapping選項選中,並將打包apk生成的mapping文件引入,執行jar的混淆操做。

五、混淆jar包執行  dx --dex --output=生成的dex包   混淆包  ,生成的dex包就是咱們須要的path_dex.jar

相關文章
相關標籤/搜索