TPatch動態補丁系統(iOS)

來源:互聯網
上載者:User

標籤:非同步   bit   標記   follow   安裝   自訂   著作權   target   好的   

著作權聲明:本文由朱煌原創文章,轉載請註明出處: 
文章原文連結:https://www.qcloud.com/community/article/160

來源:騰雲閣 https://www.qcloud.com/community

 

TPatch是一套使用JavaScript給iOS打熱補丁的系統,能非常有效解決線上App的Crash和各種問題。

1.從何而來?

對於每一個開發,從寫Hello World開始,到使用各種語言,可能都會遇到各種BUG。有的BUG能快速解決,比如Web側的,發個JS或者Html即可。但是在終端開發中,比如iOS,發現的線上問題往往沒那麼快能解決,換包可能需要Apple短則幾天長則一周以上的審核,成本很高。有沒有辦法能快速解決iOS App的線上問題?TPatch是其中一種比較好的解決方案。

2.TPatch特點

  • 支援多線程:
    使用JS打補丁的天然優勢在於JavaScriptCore是安全執行緒的,雖然鎖的粒度有點大,並且有些方法的鎖有問題(這些在TPatch都已解決)。
  • 支援Block:
    JS中的function和OC的Block有很多相似之處。有補丁中定義的function,傳遞到OC,我們會轉成Block,並且Block可以在OC和JS之間傳遞,這點Lua補丁是很難做到。
  • 非同步機制:
    由於JavsSciptCore是安全執行緒的,同時也帶來另外一個問題,假如背景工作執行緒和主線程都打了補丁,背景工作執行緒的補丁耗時非常嚴重,這時候如果主線程補丁開始運行,就會被阻塞。TPatch引入了非同步機制,能讓進入JSCore的補丁快速返回,非同步執行,減少補丁之間的影響。
  • 支援線上Reset復原:
    在補丁發布後,有可能通過監控發現補丁有問題,這時候使用者側的運行邏輯已經被“汙染”。TPatch支援,在補丁後台設定該補丁到期後,使用者側App會刪掉本地有問題的補丁包,並且線上Reset,而不是等App重啟後再恢複,下次重啟可能得好幾天。
  • 調試方便:
    利用JavaScriptCore的天然優勢,其內部提供了Debug介面。我們可以像調試App裡面的網頁一樣,使用Mac下的Safari遠端偵錯補丁,斷點、堆棧、異常等一目瞭然。
  • 精準投放:
    TPatch支援按使用者、iOS版本、業務App版本和Mask標記投放。Mask是一個可擴充的bit標記,業務可以自訂,比如取一位越獄標記,或者網路標記,補丁就可以根據是否越獄和網路標記下發。
3.核心原理

TPatch包括補丁包後台系統和終端組件,其核心原理是補丁後台根據補丁配置,下發一段補丁JS給終端,終端執行這段補丁,利用OC Runtime覆蓋有問題的方法或者執行一段邏輯,修正運行時的邏輯,從而達到修複BUG的目的。

4.打補丁流程


1) 在補丁後台下發補丁指令碼後,首先會經過iOS7及以上系統內建的JavaScriptCore.framework把JS補丁執行起來,通過調用TPatch.js裡面的Bridge介面,調用到OC裡面打補丁的方法,打上補丁。
2) 當業務代碼執行這段已經打了補丁的功能時,不會是原來的OC代碼,而是一段JS代碼。JS可以通過JS引起和OC引擎支援Block、非同步執行等,並且支援線上Reset復原。

5.和其他方案對比
  • waxPatch:
    是使用Lua+Wax打補丁的方案,App需要整合Lua解譯器和Wax架構(接近1M)。不過waxPatch對Block不太完善,多線程補丁也可能有問題,Wax也已經兩年沒人維護。相比之下TPatch更加輕量,對安裝包影響僅200K,功能也更加強大。
  • JSPatch:
    同樣使用JS來打補丁,和TPatch終端組件核心原理是相似的。不過JSPatch在實際的海量產品中運用還有不少問題沒解決,比如Block傳遞、多線程Crash等問題,TPatch解決了這些問題,更加穩定,並且支援非同步機制、動態復原等最佳化特性。

 

TPatch動態補丁系統(iOS)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.