本篇文章會與你們一塊兒學習使用阿里的AndFix熱修復框架,能夠說AndFix是國內熱修復技術的開山始祖,儘管如今阿里已經放棄了對這個項目的維護,可是後來不少的熱修復技術都借鑑了這一框架的實現思路。 android
1.什麼是AndFix?
AndFix是阿里巴巴出的一個專門針對Android的熱修復框架
,那什麼是熱修復呢?就是不須要從新安裝APK而達到修復bugs的目的。
看看阿里巴巴官方對AndFix的描述:
英文好的能夠看官網說明文檔(有翻譯不妥歡迎指出)
1.AndFix是一個Android庫,它是在線解決bugs,而不是從新安裝app的一種解決方案。
2.AndFix是Android hot-fix
的縮寫
3.AndFix 支持Android的2.3-7.0的版本,支持ARM和X86的處理器,支持Dalvik與ART的運行時,支持32位和64位。
4.AndFix的補丁文件的格式是.apatch
,它是由您本身的服務器分發到客戶端解決您的應用程序的錯誤。
2.AndFix的原理
AndFix的實現原理是方法體的替換
服務器
3.修復過程markdown
4.獲取AndFix庫
直接將AndFix AAR添加到您的項目做爲編譯庫。
對於Maven的依賴:
<dependency>
<groupId>com.alipay.euler</groupId>
<artifactId>andfix</artifactId>
<version>0.5.0</version>
<type>aar</type>
</dependency>
對gradle的依賴:
dependencies {
compile 'com.alipay.euler:andfix:0.3.1@aar'
}
5.如何使用AndFix
1.初始化PatchManager
patchManager = new PatchManager(context);
patchManager.init(appversion);//current version
2.加載補丁
patchManager.loadPatch();
你應該儘量早地加載補丁,一般在你的應用程序初始化階段加載補丁,例如:在Application.onCreate()
中加載補丁
3.添加補丁
patchManager.addPatch(path);//path of the patch file that was downloaded
當一個新的補丁文件已經下載,,經過調用了addPatch()方法就會當即生效。
6.補丁製做工具
1.下載補丁製做工具
AndFix 給咱們提供了一個製做補丁的工具apkpatch網絡
2.使用補丁工具
1.準備兩個android apk文件 , 一個是在線的apk文件,另外一個是修復bug後的apk文件(兩個apk的版本號同樣)
2.經過這兩個apk文件生成一個補丁文件.apatch
//在補丁的工具文件夾中,打開控制檯,並在控制檯輸入:
apkpatch -f <new> -t <old> -o <output> -k <keystore> -p <> -a <alias> -e <>
//參數說明:
-a,--alias <alias> keystore entry alias.
-e,--epassword <> keystore entry password.
-f,--from <loc> new Apk file path.
-k,--keystore <loc> keystore path.
-n,--name <name> patch name.
-o,--out <dir> output dir.
-p,--kpassword <> keystore password.
-t,--to <loc> old Apk file path.
3.在控制檯中執行上面命令後,在指定的<output>文件夾中後會生成,以下文件:
smali
app-release1-44c095be1acbdd01beed3afd478182f0.apatch
diff.dex
其中app-release1-44c095be1acbdd01beed3afd478182f0.apatch
就是補丁文件。app
本篇和你們一塊兒學習了什麼是AndFix,以及在發現Bug後使用AndFix生成一個補丁包並進行熱更新修復,也大概講了一下在實際生產環境中實現熱更新修復功能的流程,並簡單地封裝了在網絡環境中實現熱更新修復的功能。框架