Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> 熱修復-Tinker,修復-tinker

熱修復-Tinker,修復-tinker

編輯:關於android開發

熱修復-Tinker,修復-tinker


 

微信開源,真是喜出望外,必須要去看看啊,比起nuwa來微信好很多,而且github上也有專門的官方文檔說明,還有很多資料查詢

參考地址:https://github.com/Tencent/tinker/wiki

     https://github.com/Tencent/tinker/wiki/Tinker-%E6%8E%A5%E5%85%A5%E6%8C%87%E5%8D%97

想著以前研究的時候還要分包塊什麼一些復雜想法,現在發展到這種程度,真是三天不打就上房揭瓦了,很好比喻互聯網,學習不能斷,可能在不知不覺的時候就已經發展幾個階段了

看對比圖也知道了,微信的方式,和qq空間的方式的區別是不用插樁,無補丁的時候幾乎沒有性能損失,打補丁時需要刪除核心加載類

文檔還是挺詳細的,照著文檔來,基本跑通就沒問題了

首先肯定是下載demo了,然後文檔上介紹了幾種方案,也是推薦gradle生成配置(見下圖),demo裡也是那樣做的,那我們肯定也是走這個方案了

 

集成的時候demo裡的gradle配置上用的 TINKER_ID 是獲取的git的版本號,這個搞起來麻煩,文檔上有結束,可以換成versionName等,我就換的versionName,這個 TINKER_ID 要注意保持一致,不然會失敗

然後直接運行程序,或者build apk,成功後在你的項目路徑app\build\bakApk裡應該會有apk生成

然後可以修改你的bug了,修改好之後在As的terminal終端使用命令行 gradlew tinkerPatchDebug,可不能直接用你自己的apk改個名字就丟上去了,那樣就over了

 

 

 

 然後看到successful,這個時候在你項目的目錄裡就會有生成apk了,app\build\outputs\tinkerPatch\debug\

這個就是你的補丁了,把這個apk放到手機根目錄就行了

 

點開你的app,點擊load patch,你會看到一個打印出 patch success, please restart process的toast,然後點擊SHOW INFO可以查看到詳細的信息顯示補丁包已經加載成功了,github本身就很多介紹的資料,可以結合別人寫的好的博客看看學習,讓自己更快的掌握

 

/**

*個人理解

*微信針對QQ空間超級補丁技術的不足提出了一個提供DEX差量包,整體替換DEX的方案。主要的原理是與QQ空間超級補丁技術基本相同,整體替換掉舊的DEX,達到修復的目的

**/

SampleApplication是gradle自動生成的,繼承自 TinkerApplication ,然後設置捕捉代碼異常,onBaseContextAttached就是我們要找的關鍵代碼了

 

 

這代碼大致是反射調用TinkerLoader的tryLoad()方法拿到加載補丁結果,加載補丁包,反射調用同步周期,重置安全模式次數,大於等於三次會進入安全模式不再加載,一點點理解
深入研究很是復雜的,正如微信張紹文所說,這真是一條跪著走完的路,而且我們可以不用跪了,先乘個涼

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved