JSPatch是一個開源項目,只須要在項目裏引入極小的引擎文件,就可使用 JavaScript 調用任何 Objective-C 的原生接口,替換任意 Objective-C 原生方法。目前主要用於下發 JS 腳本替換原生 Objective-C 代碼,實時修復線上 bug.xcode
註冊安全
1. 註冊jspatch帳號並登陸.(http://www.jspatch.com).
添加應用,獲取appKeyapp
登錄獲取appkeyjsp
2. 在"個人app"中添加新的app,未上線項目無需填寫AppStoreID,添加完成後能夠看到appKey.
3. 導入framework和相關類庫
在官網下載SDK,將解壓獲得的 JSPatch.framework
導入到項目,並添加依賴的類庫:libz.tbd
和JavaScriptCore.framework
便可.測試
添加libz.tbd和JavaScriptCore.framework加密
4. 測試補丁和發佈補丁
本地測試:新建一個main.js文件,在這個文件中編寫js代碼(用於替換oc代碼的),這個main.js文件若是在項目中,經過[JSPatch testScriptInBundle]
;spa
本地測試3d
在線更新:方法測試補丁,補丁測試經過後,能夠將這個main.js文件上傳到jspatch官網,經過[JSPatch startWithAppKey:@"APPKey"]
;方法調用在線補丁,項目中的appDelega.m文件中的代理方法中寫入這個方法,發佈的app每次啓動時會在線查找補丁,若是有版本號一致的補丁,則會下載這個補丁,用來替換相應的方法.代理
在線熱更性code
5. 發佈補丁包
在app管理中"新建版本",新建版本後,上傳main.js文件再點擊提交便可.須要注意的是新建版本中的版本,對應項目的版本號,app在線上尋找補丁時,版本號是一個篩選條件.
傳輸安全
JSPatch腳本的執行權限很高,若在傳輸過程當中被中間人篡改,會帶來很大的安全問題,爲了防止這種狀況出現,咱們在傳輸過程當中對JS文件進行了RSA簽名加密,流程以下:
服務端:
計算 JS 文件 MD5 值。
用 RSA 私鑰對 MD5 值進行加密,與JS文件一塊兒下發給客戶端。
客戶端:
拿到加密數據,用 RSA 公鑰解密出 MD5 值。
本地計算返回的 JS 文件 MD5 值。
對比上述的兩個 MD5 值,若相等則校驗經過,取 JS 文件保存到本地。
因爲 RSA 是非對稱加密,在沒有私鑰的狀況下第三方沒法加密對應的 MD5 值,也就沒法僞造 JS 文件,杜絕了 JS 文件在傳輸過程被篡改的可能。
本地存儲
本地存儲的腳本被篡改的機會小不少,只在越獄機器上有點風險,對此 JSPatch SDK 在下載完腳本保存到本地時也進行了簡單的對稱加密,每次讀取時解密。
緣由可能有:
錯誤信息:JSPatch: request success {error = "Document not found";}
錯誤信息:JSPatch: request success {error = "Document not found";}
錯誤信息:不會出現任何"JSPatch: request success {}"提示
錯誤信息:輸出成功信息JSPatch: request success {v = 1;},可是依然執行oc代碼而不是js代碼