andfix的主要功能是完成熱更新罕伯,可以在不用下載新的apk的情況下完成對應(yīng)用程序的更新。
Andfix的基本流程圖如下所示
使用原理說明
在使用中纤勒,可以將整個使用過程分成兩部分
- 原始apk和修復(fù)之后的apk的編寫
- patch文件的生成
原始apk和修復(fù)之后的apk的編寫
- apk的編寫
如果計劃在后續(xù)的apk更新中使用andfix完成楞艾,那么在編寫原始apk時,需要添加andfix相關(guān)的內(nèi)容犀农。
首先需要導(dǎo)入PatchManager
在使用時惰赋,主要可以分成三個步驟
1.1 初始化
1.2 loadPatch
1.3 addPatch
具體代碼如下圖
初始化時init的參數(shù)是版本號,這里直接賦值為1.0呵哨,也可以通過
PackageManager
對象中的方法獲取版本號赁濒,方法如下
mPatchManager.init(getPackageManager().getPackageInfo().versionName)
在通過這種方法獲取版本號時轨奄,如果版本號有變化,則會導(dǎo)致所有的補(bǔ)丁被刪除流部;如果版本號沒有變化戚绕,那么會加載所有的補(bǔ)丁。
patch文件的生成
阿里本身提供了用來生成patch文件的工具apkpatch枝冀,apkpatch是一個壓縮包舞丛,解壓之后可以得到如下所示內(nèi)容
windows下運(yùn)行
apkpatch.bat
文件,linux下運(yùn)行apkpatch.sh
文件生成patch文件果漾。
-
參數(shù)說明
- 注意事項
在編寫完原始apk和修復(fù)之后的apk之后球切,在生成patch文件時,需要提供apk生成時使用的簽名證書绒障,這一點在阿里的官方文檔上沒有說明吨凑,這里說明記錄一下。
如果開發(fā)者是使用的自己的keystore對apk進(jìn)行簽名户辱,那么這里直接對應(yīng)參數(shù)信息即可
如果開發(fā)者是使用了AOSP提供的密鑰對apk進(jìn)行簽名鸵钝,那么可能用戶不知道自己所使用的keystore的位置,所以這里記錄下位置庐镐。
linux上keystore文件的位置是~/.android
路徑下恩商,.android
文件夾是一個隱藏文件加,在終端使用la
命令可以看到該文件必逆,進(jìn)入該文件之后就能找到AOSP提供的默認(rèn)的keystore文件怠堪。如下圖
在使用apkpatch時,還需要輸入keystore的密碼以及所使用證書的別名名眉,AOSP提供的debug.keystore的默認(rèn)密碼是android
,然后可以使用keytool命令來查看keystore
文件粟矿,從中得到別名信息。如下圖
打開
apkpatch.bat
文件损拢,可以看到其實apkpatch.bat文件是通過java -jar
來調(diào)用apkpatch-1.0.3.jar包完成patch文件的生成
使用流程
-
從github上獲取阿里提供的一個demo程序,demo程序的文件目錄如下所示
-
在build.gradle中添加依賴
- 編譯運(yùn)行demo程序陌粹,生成第一個apk
-
修改demo程序代碼,替換函數(shù)調(diào)用探橱,這里我是修改了函數(shù)中的一個變量的值申屹。如下圖所示
- 運(yùn)行修改之后的代碼,生成新的apk
- 使用apkpatch工具生成patch文件隧膏,將文件移動到手機(jī)sd卡上哗讥。(apkpatch的使用上邊有描述)
-
重新運(yùn)行第一個apk,查看日志可以發(fā)現(xiàn)完成修改
patch文件不一定非要放在sd卡的根目錄上胞枕,只要存放路徑與代碼中查找路徑一致即可