最近須要在項目中使用熱修復框架,在這裏以美團的Robust爲主寫一篇文章總結一下學習的過程。android
一直認爲要學習一個框架的原理,首先須要讓他跑起來,從效果反推回去,這樣更容易理解。 git
1、美團Robust的使用github
首先咱們在編寫代碼前須要作以下準備框架
配置文件讀寫權限,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複製到咱們的項目中gradle
將下面兩個地方改成咱們的包名,其餘地方不建議在新手測試的時候進行修改。ui
同時要記得將App的混淆打開,緣由在後面會提到spa
到目前爲止,咱們能夠開始代碼方面的編寫了
首先給你們看一下目錄結構
首先咱們看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以上要手動開啓讀取寫入權限。
這樣咱們就成功了。如果運行失敗,建議去看一看打印出的異常,具體分析緣由。
2、小結
在接下來的分析中,將會分析美團Robust的原理。