編輯:關於Android編程
android的熱修復技術我看的最早的應該是QQ空間團隊的解決方案,後來真正需要了,才仔細調查,現在的方案中,阿裡有兩種Dexposed和Andfix框架,由於前一種不支持5.0以上android系統,所以阿裡系的方案我們就看Andfix就好。Hotfix框架算是對上文提到的QQ空間團隊理論實現。本文旨在寫實現方案,捎帶原理。
框架官網:https://github.com/alibaba/AndFix
使用android studio開發,引入如下:
compile ‘com.alipay.euler:andfix:0.4.0@aar‘
下面是個修復的過程圖,供我們更好地理解。
可以看出,andfix的修復是方法級的,對有bug的方法進行替換。
官方有給使用方式,不過比較簡略,所以會有些修改。我的思路是把補丁制作好,然後放到服務器上,客戶端下載補丁到指定文件夾,然後修復。
首先要有補丁的制作工具,官方也為我們准備好了:這裡
解壓後,我們把修復前的apk和修復後的apk,keystore(為了方便,我就用debug的keystore了)放到這個文件夾裡,如下:
其中需要用命令做補丁文件,就是需要一個修復前的apk和修復後的apk做對比,命令含義如下:<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxwcmUgY2xhc3M9"brush:java;">
命令 : apkpatch.bat -f new.apk -t old.apk -o output1 -k debug.keystore -p android -a androiddebugkey -e android
-f <new.apk> :新版本
-t <old.apk> : 舊版本
-o <output> : 輸出目錄
-k <keystore>: 打包所用的keystore
-p <password>: keystore的密碼
-a <alias>: keystore 用戶別名
-e <alias password>: keystore 用戶別名密碼
然後會在outputdic裡生成一個後綴是.apatch的文件:
改名成out.apatch,這就是我們的補丁。
如何使用補丁呢?和把大象裝進冰箱是一樣步驟。
下面直接上代碼了:
第一步:把補丁放到服務器。
簡單起見,用的xampp,寫了段php代碼,起到下載的功能就可以了。