Tinker迭代2.0簡述

為何使用熱修復?

項目開發中難免會有一些問題,需要修改,直接進行發版的話成本較高。這時候我們就需要一個可以在不進行版本更新,就可以修復問題的工具。所以說,熱修復的定位就是對一些非緊急,需要解決的bug進行修復的輔助工具。

什么是Tinker?為何選用它?

  • Tinker是微信官方的Android熱補丁解決方案,它支持動態下發代碼、So庫以及資源,讓應用能夠在不需要重新安裝的情況下實現更新。當然,你也可以使用Tinker來更新你的插件。

  • 國內大大小小,有很多開源的熱修復工具,方案。但他們或多或少有著生產項目難以接受的問題:

    Tinker QZone AndFix Robust
    類替換 yes yes no no
    So替換 yes no no no
    資源替換 yes yes no no
    全平臺支持 yes yes yes yes
    即時生效 no no yes yes
    性能損耗 較小 較大 較小 較小
    補丁包大小 較小 較大 一般 一般
    開發透明 yes yes no no
    復雜度 較低 較低 復雜 復雜
    gradle支持 yes no no no
    Rom體積 較大 較小 較小 較小
    成功率 較高 較高 一般 最高

總的來說:

  1. AndFix作為native解決方案,首先面臨的是穩定性與兼容性問題,更重要的是它無法實現類替換,它是需要大量額外的開發成本的;
  2. Robust兼容性與成功率較高,但是它與AndFix一樣,無法新增變量與類只能用做的bugFix方案;
  3. Qzone方案可以做到發布產品功能,但是它主要問題是插樁帶來Dalvik的性能問題,以及為了解決Art下內存地址問題而導致補丁包急速增大的。

特別是在Android N之后,由于混合編譯的inline策略修改,對于市面上的各種方案都不太容易解決。而Tinker熱補丁方案不僅支持類、So以及資源的替換,它還是2.X-8.X(目前也支持9.0)的全平臺支持。并且Tinker已運行在微信的數億Android設備上。

已知問題

理想很美好,愿世上沒有bug,or Tinker可以解決我們遇到的所有問題,但就幾次線上補丁的發布以及最終結果來看,他都或多或少有以下幾個問題:

  • 以下都是針對我們使用的1.9.2版本來說明:
    1. 公司內部部分手機補丁沒有生效,測試部門的兩款Vivo手機,這個是tinker已知的問題,Vivo部分手機,會執行異步dex2oat,在dex合成等待時間內,并沒有修復成功,目前于使用tinker1.9.9版本測試時,確認已經修復。
    2. 項目更新了x5 webview的版本,下發補丁。但客戶反饋有手機會有手機連續閃退三次,回退到補丁前的版本。對于此問題,我們也仔細的研究了友盟后臺的crash日志,發現的確有華為android 8.0,9.0存在閃退的情況。
    3. Tinker必須要重啟后生效,硬傷。
    4. 對于整個android系統來說,熱修復方案其實是一種逆向行為,無論是哪種方案,都可能存在兼容性問題的,而且每次android新版本發布,尤其對虛擬機等做優化時,基本上都會成為熱修復的“坑”。
    5. 用戶安裝補丁后,可能修復過程或者修復后,app閃退,此時我們是閃退三次,再清除補丁,能否閃退一次就進行清除?
  • 官方介紹說明,由于原理與系統限制,Tinker有以下已知問題:
    1. Tinker不支持修改AndroidManifest.xml,Tinker不支持新增四大組件(1.9.0支持新增非export的Activity);
    2. 由于Google Play的開發者條款限制,不建議在GP渠道動態更新代碼;
    3. 在Android N上,補丁對應用啟動時間有輕微的影響;
    4. 不支持部分三星android-21機型,加載補丁時會主動拋出"TinkerRuntimeException:checkDexInstall failed"
    5. 對于資源替換,不支持修改remoteView。例如transition動畫,notification icon以及桌面圖標。

對我們有何影響?如何解決

  • 1.9.2不支持vivo,目前可以通過升級Tinker版本,較為簡單的解決。

  • Tinker作為微信實際使用的動態代碼修復方案,他們也會不斷接收到來自于手機廠商,開發者反饋的各種問題,不斷更新版本。目前已經迭代到1.9.11并解決了部分問題。

  • 對于組件新增,目前我們的bug場景不會涉及。google市場暫時不會上架,需要上架時,我們不下發補丁即可。

  • 對于此次小邑出現的崩潰,目前總結有以下兩個原因:

    1. 更新X5版本,代碼設計修改點很大,風險性預估不充分,測試覆蓋不全面
    2. tinker版本項目中使用的還是1.9.2,此時android9.0尚未發布,廠家的定制系統可能不夠適配,需要及時迭代,方可使用。
  • 對于補丁異常出現三次,再進行清除,我們可以設置次數。

  • 對于補丁下發,我們沒有整體把控的數據支持;于此,我們增加補丁下發覆蓋率(下載補丁數/活躍用戶數),成功率(成功/活躍用戶數)的數據統計。新增bugly渠道跟蹤異常,bugly可以更及時,準確的反饋異常。

  • 接下來我們重點考慮如何降低Tinker導致的異常崩潰:

    1. 對于補丁版本嚴格把控,對補丁修改涉及的影響點評估。并列入修改點,提供給項目經理,再向上請示,是否進行相關修改。

    2. 確認發布補丁時,需要對補丁修復后的app,測試針對影響點,盡可能多的利用公司手機,覆蓋測試。

    3. 結合線上資源,對補丁進行云測,擴大覆蓋面,非正式包可設置補丁成功直接重啟,進而不影響云測。

    4. 啟用灰度測試,僅針對部分園區下發,并跟蹤成功率,崩潰率等數據,進行補丁是否全面下發的判斷。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,739評論 6 534
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,634評論 3 419
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 176,653評論 0 377
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,063評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,835評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,235評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,315評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,459評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,000評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,819評論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,004評論 1 370
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,560評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,257評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,676評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,937評論 1 288
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,717評論 3 393
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,003評論 2 374

推薦閱讀更多精彩內容