??熱更新三方平臺
??熱更新,即App不需要上線新版本就可以進行Bugfix,我覺得JSPatch是對開發(fā)者比較友好的熱修復框架,原因有三:
- 基于iOS內置的JavascriptCore引擎和Object-C的runtime機制實現(xiàn),集成簡單
- 熱修復腳本文件使用JavaScript語言編寫,容易上手
- 多個JSPatch腳本下發(fā)平臺支持,無須開發(fā)者再煩心腳本下發(fā),以及腳本下發(fā)安全問題
1 JSPatch簡介
??JSPatch是騰訊工程師bang開源的一個基于JavascriptCore引擎和Object-C runtime機制的熱修復框架,現(xiàn)已經(jīng)被廣泛應用在iOS App的熱修復上,腳本文件使用JavaScript語言編寫。
??關于JSPatch的原理剖析以及使用方法介紹,網(wǎng)上已經(jīng)有很多文章,我也不班門弄斧了,這里有兩篇文章,都是作者bang自己寫的,參考意義比較大,適合大家學習。
??JSPatch實現(xiàn)原理詳解
??【騰訊Bugly干貨分享】JSPatch 成長之路
??至于想要知道如何編寫JSPatch腳本文件,以及腳本文件的語法的可以移駕JSPatch的github地址。
2 JSPatch腳本下發(fā)平臺
??由于項目需要,接觸過兩個平臺,一個是Bugly,一個是JSPatch,比較傾向于JSPatch,從bang在他的github readme中重點推薦JSPatch以及名稱上就能夠知道JSPatch的正宮位置了,所以接下來我們只討論JSPatch。
2.1 關于蘋果審核拒絕熱修復的問題
??去年(2017年)蘋果毫無征兆地對所有使用JSPatch的App開發(fā)者發(fā)出了一封警告郵件,表明不許使用JSPatch等基于映射的熱更新服務,在iOS開發(fā)社區(qū)引發(fā)了熱議,當時剛剛開始準備接入JSPatch的我也停下了腳步,保持著觀望態(tài)度,經(jīng)過了一段時間的冷卻,蘋果官方也從一開始零容忍的態(tài)度轉變?yōu)榭扇萑蹋ú]有發(fā)文表態(tài))的態(tài)度,而且JSPatch也對此作出了相對應的處理,一方面聯(lián)系蘋果,表明在JSPatch腳本文件下發(fā)過程是安全的,一方面針對腳本文件涉及到私有API調用情況進行審核,經(jīng)過我的試驗,現(xiàn)在App中集成JSPatch已經(jīng)不會被蘋果拒絕審核了(似曾相識的場景是吧,之前蘋果針對App中的贊賞功能也強制要求內購,現(xiàn)在也變得睜一只眼閉一只眼了)。
??JSPatch平臺針對蘋果審核拒絕的情況主要作出了以下動作:
- 腳本下發(fā)使用加密傳輸,避免有人惡意修改下發(fā)的腳本代碼
- 腳本文件上傳會經(jīng)過審核處理,如果發(fā)現(xiàn)涉及到私有API調用將不允許發(fā)布
- 由于蘋果審核時一般采用機器掃描識別代碼中JSPatch框架的API,所以在SDK中使用了代碼混淆,避免蘋果審核時機器識別到
2.2 JSPatch平臺的使用
??JSPatch平臺的集成十分簡單,下發(fā)過程由于增加了加密傳輸,所以安全也能夠得到保障,具體可以查看開發(fā)文檔。
??另外,由于JSPatch平臺目前已經(jīng)沒有了免費版,所以大家可以根據(jù)自己需要進行套餐選擇,如果想要試驗可靠性,可以先申請一個賬號,再通過郵箱獲取到標準版的SDK下載地址就可以有30天的試用期,如果覺得OK再買也沒問題。
??寫到這里都要感覺自己是JSPatch平臺的銷售了??,不要誤會啊,我只是覺得好東西需要分享出來。