背景
也要付出巨大的成本進行換包和重新發布。
這時候就提出乙個問題:有沒有辦法以補丁的方式動態修復緊急bug,
目前主流的有這3種方式可以實現(至於其他的方式,暫不清楚)
1.dexposed github
2.andfix github
3.bsdiff
dexposed和andfix是alibaba的開源專案,都是apk增量更新的實現框架,目前dexposed的相容性較差,
只有2.3,4.0~4.4相容,其他android版本不相容或未測試,詳細可以去dexposed的github專案主頁檢視,
而andfix則相容2.3~6.0,所以就拿這個專案來實現增量更新吧。至於bsdiff,只是閱覽了一下,還沒研究過。
一,android studio可以在build.gradle裡匯入andfix,
compile 'com.alipay.euler:andfix:0.3.1'
gradle匯入的話還有個小問題,所以還是建議把類庫原始碼匯入到你的專案中去
但是我是使用module的方式新增andfix,這樣可以直接檢視編輯原始碼,而且直接,後面再說。
我的專案裡有andfix類庫原始碼,你可以直接把原始碼匯入到專案中,如下圖所示
二,在你的專案記得新建jnilibs資料夾,把我專案中jnilibs裡的so檔案移到你的jnilibs裡,或者直接將相應的so檔案放到你的libs目錄下對應的資料夾如下圖。
final string dir = "apatch";//補丁資料夾
/*** patch manager
*/private patchmanager mpatchmanager;
@override
public
void oncreate() catch (ioexception e)
} }
四,接著打包1.apk(這個1.apk就相當於你上線的版本)
然後修改mainactivity的toast(),打包2.apk。(
五,生成你的補丁包(最重要的一步)
這時需要用到:apkpatch-1.0.3 你可以到網上下,也可以直接用我專案裡的apkpatch-1.0.3壓縮檔案
在apkpatch-1.0.3中把你生成的1.apk 和2.apk複製到apkpatch-1.0.3檔案中,把你的簽名檔案:**.keystore也複製到apkpatch-1.0.3檔案中
接下來cmd命令列上場了
上面輸入的命令列:
apkpatch -f 2.apk -t 1.apk -o output1 -k qiushi.jks -p 123456 -a qiushi -e 123456
命令列意思:
apkpatch -f new.apk -t old.apk -o output1 -k 簽名檔案 -p 簽名密碼 -a 機構名 -e 機構簽名密碼
六,如無錯誤,編譯後會生成乙個apatch檔案,改名成out.apatch,如下圖
安裝開啟1.apk
七,還有原始碼混淆
。謝謝博主的文章
關於熱修復
首先我們做熱修復,應該在release狀態下執行 它的設定在build variants中設定 在gradle中配置簽名 signingconfigs buildtypes compile com.alipay.euler andfix 0.3.1 aar private patchmanager ...
Android AndFix 熱修復框架
今天帶來的是阿里的熱修復框架andfix使用,廢話不多說直接看下文。lib包 andfixlib 補丁製作工具 apkpatch 使用 如果你用的是as的話就直接新增依賴 dependencies如果是使用的eclipse的就直接全部使用上面的那個lib包就好了。一 初始化 patchmanager...
Android AndFix 熱修復框架
標籤 框架 android 2016 06 28 19 23 1012人閱讀收藏 舉報 技術操作 3 實用 6 學習經驗 12 今天帶來的是阿里的熱修復框架andfix使用,廢話不多說直接看下文。lib包 andfixlib 補丁製作工具 apkpatch 使用 如果你用的是as的話就直接新增依賴 ...