按步驟一直沒有弄出效果,最後按這篇博客弄出來了。
參考博客: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