Alibaba-AndFix Bug 熱修復 以及添加到自己項目中

按步驟一直沒有弄出效果,最後按這篇博客弄出來了。

參考博客:http://blog.csdn.net/yaya_soft/article/details/50460102

github上andfix的地址 https://github.com/alibaba/AndFix

原理:http://blog.csdn.net/qxs965266509/article/details/49816007


簡單的理解是

生成補丁包,然後重命名爲out.patch複製到android根目錄下,然後啓動app,加載補丁

將註解類Method在native層替換掉。


使用方法是用命令andfix提供的打包工具

apkpatch-1.0.3.jar

apkpatch.bat

apkpatch.sh

usage: apkpatch -m <apatch_path...> -o <output> -k <keystore> -p <***> -a <alias> -e <***>
 -a,--alias <alias>     keystore entry alias.
 -e,--epassword <***>   keystore entry password.
 -k,--keystore <loc>    keystore path.
 -m,--merge <loc...>    path of .apatch files.
 -n,--name <name>       patch name.
 -o,--out <dir>         output dir.
 -p,--kpassword <***>   keystore password.


(這裏我的系統mac OS  window應該用)

使用命令./apkpatch.sh  -f new.apk -t old.apk -o output1 -k test.keystore  -p 111111 -a test -e 111111;

(這裏我的系統mac OS  window應該用)

apkpatch.bat -f new.apk -t old.apk -o output1 -k test.keystore  -p 111111 -a test -e 111111;


此時命令輸出成功打開output1會看到後綴.apatch文件

將後綴apatch後綴重命名爲.zip

打開後可以看到classes.dex和META-INF文件夾

classes.dex轉化jar後的源碼如下

可以使用以下提到的工具查看classes.dex源碼:

dex2jar  將dex轉jar 命令行工具

http://www.jb51.net/softs/353141.html

Jdgui來查看jar源碼  圖形工具mac版

http://download.csdn.net/detail/u010268947/7657031#comment





CERT.RSA

CERT.SF

MANIFEST.MF

Manifest-Version: 1.0
Created-By: 1.0 (ApkPatch)

Name: classes.dex
SHA1-Digest: 7Sl9fRkO7ae1fNc+M6GluMFyP3E=


PATCH.MF

Manifest-Version: 1.0
Patch-Name: new
Created-Time: 4 Apr 2016 14:12:55 GMT
From-File: new.apk
To-File: old.apk
Patch-Classes: com.yang.tony.andfixdemo.MainActivity_CF
Created-By: 1.0 (ApkPatch)




以下是自己根據其他博客和github的地址寫的demo

點擊UPLOAD VERSION 顯示new

點擊RESET PATCH 會彈出OLD


值得注意的是andfix只能加載一次補丁,如果要生效需要調用

mPatchManager.removeAllPatch();
// load patch
mPatchManager.loadPatch();



下面是自己爲了方便生成補丁寫的工具類---





下載地址:http://download.csdn.net/detail/b275518834/9485250


注意熱修復是在內存中進行的,如果重啓的話,app會還原爲來原來沒有打補丁的狀態。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章