安卓 熱修復-Tinker接入

本文主要講tinker官方Demo的接入使用,沒有用到tinkerPatch補丁後臺管理系統。

1.從git上面下載tinker的官方demo下來,裏面的東西不深究,就直接從他的tinker-sample-android這個demo 開始

2.將其導入as中,一般直接導入進來是無法運行的,他會報錯,這是個什麼錯呢,啥玩意又是tinkerid呢,從上面的wiki裏面可以看出這些參數的意思,如果對build.gradle裏面那些配置參數不懂的都可以在上面的wiki中尋找到,這個tinkerID我的理解就是加密和解密一樣的匹配關係,驗證基準apk包的時候判斷是不是補丁包的tinkerid一樣

 

3.這個tinkerid 可以用git版本號,也可以用versionname來定義,這個demo裏面他用的是他的git 版本號,所以直接拿來我們跑肯定是有問題的,我們需要手動修改下這個(如果你有配git的話可以用git版本好來定義,如果沒有的話就用versionname一樣,反正最終都是用一個字符串來表示),如果修改build.gradle裏面的 def gitSha()方法 我用的是git的版本號 

命令行敲命令:git --version ,獲取版本號

兩種方式設置tinkerID均可,最終都是用一個字符串來表示,如下圖所示:

4,我們在gradle裏面運行assembleDebug(雙擊執行)生成一個apk文件 我們先將這個apk安裝到手機上;

 

5,上一步生成apk包後,在這個 目錄複製.apk的名字和.txt文件的名字,進入build.gradle裏面將tinkerOldApkpath和tinkerapplyResourcePath的路徑替換成剛纔你複製的,這樣就等於指定了後期更新的包 是要替換掉這個前期的包。

6,緊接着對項目進行任意修改(價格按鈕,改下圖片啥的),模擬對項目進行了bug修復,最後就要發補丁版本了(第4步的是base版本,這一步生成補丁版本)

我們在gradle裏面運行gradle裏面tinker目錄下的tinkerpatchdebug(雙擊執行):

 

7,將這個生成的pathc_signed_7zip.apk這個補丁包放入我們內存卡的根目錄中,可以直接將這個apk放入我們的根目錄,也可以執行:adb push apk包全路徑  /storage/sdcard0/

命令來將我們的補丁包放入sd卡根目錄。 

 

8,點擊我們一開始安裝的app ,點擊LOAD PATCH加載我們的補丁包,再點擊kill self或者徹底退出應用,再重新進入,補丁即生效!至此熱修復結束

 

總結: 一開始我也研究了挺久 ,實際項目使用的熱修復跟官方的demo還是有很大的差別的,因爲我不想使用tinkerPatch補丁後臺管理系統,可以直接這樣做:在應用入口Application類,或MainActivity中,加一個檢查更新補丁的功能,若服務端有最新的包,則下載下來並保存到sdcard,在讓應用加載補丁包即可實現熱修復功能。

檢查更新推薦UpdateAppUtils,一行代碼快速實現app版本更新https://github.com/teprinciple/UpdateAppUtils

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章