熱修複-Tinker,修複-tinker

來源:互聯網
上載者:User

熱修複-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()方法拿到載入補丁結果,載入補丁包,反射調用同步周期,重設安全模式次數,大於等於三次會進入安全模式不再載入,一點點理解
深入研究很是複雜的,正如張紹文所說,這真是一條跪著走完的路,而且我們可以不用跪了,先乘個涼

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.