美團熱修復Robust的踩坑之旅-使用篇


  最近需要在項目中使用熱修復框架,在這里以美團的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的原理。

  

  

  

  

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM