最近需要在項目中使用熱修複框架,在這裡以美團的Robust為主寫一篇文章總結一下學習的過程。 一直認為要學習一個框架的原理,首先需要讓他跑起來,從效果反推回去,這樣更容易理解。 一、美團Robust的使用 首先我們在編寫代碼前需要做如下準備 配置文件讀寫許可權,6.0以上需要手動獲取 在project ...
最近需要在項目中使用熱修複框架,在這裡以美團的Robust為主寫一篇文章總結一下學習的過程。
一直認為要學習一個框架的原理,首先需要讓他跑起來,從效果反推回去,這樣更容易理解。
一、美團Robust的使用
首先我們在編寫代碼前需要做如下準備
配置文件讀寫許可權,6.0以上需要手動獲取
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
在project的gradle文件中編寫如下代碼
在module的gradle文件中編寫如下代碼
同時我們將從github上下載的美團Robust的例子中的robuts.xml複製到我們的項目中
將下麵兩個地方改為我們的包名,其他地方不建議在新手測試的時候進行修改。
同時要記得將App的混淆打開,原因在後面會提到
到目前為止,我們可以開始代碼方面的編寫了
首先給大家看一下目錄結構
首先我們看MainActivity的代碼
界面很簡單,一個TextView和兩個Button,圖片在後面
這裡面重要的就是這個newPatchExecutor,傳入了我們寫的PatchManpulateImp,和一個回調。
我們接下來看PatchManpulateImp這個類。
這裡我們可以將美團的PatchManpulateImp類複製下來,稍微修改一下就可以了
這裡改為“你的包名”+PatchesInfoImpl即可
RobustActivity裡面的代碼很簡單如下
這裡全部完成後我們可以開始生成apk了,這裡要註意要生成帶簽名的apk-release。
這裡要註意的是生成帶簽名的release apk時,要同時勾選v1,v2。不然一會通過adb命令想genymotion安裝App時會報錯。
生成Apk後我們通過adb命令將apk安裝到模擬器上,這裡有的同學可能發現adb無法使用,需要在系統中設置環境變數,adb工具在androidsdk中自帶,可以在sdk中去找。
接下來是補丁生成的流程
生成apk後我們可以看到Robust給我們生成瞭如下文件。新建一個與src同級的文件夾robust,將這兩個文件複製過去,這裡要註意我們在前面如果沒配置混淆的話,這兩個文件是不會出現的。
將我們前面的gradle文件打開,修改如下
然後修改RobustActivity中的代碼如下
在terminal中調用如下命令
gradlew clean assembleRelease --stacktrace --no-daemon
生成補丁包
這裡會build失敗,不影響,有下列即為成功,我們可以看到這裡已經生成了補丁包
現在我們把補丁包push到我們的模擬器中
這裡面我們push jar包到我們在PatchManpulateImp中設置的地址的前一級
現在我們開始運行程式,先點擊載入jar包,這裡要註意Anroid6.0以上要手動開啟讀取寫入許可權。
這樣我們就成功了。若是運行失敗,建議去看一看列印出的異常,具體分析原因。
二、小結
在接下來的分析中,將會分析美團Robust的原理。