javascript
JSPatch使用
JSPatch 是一個開源項目(Github鏈接),只需要在項目里引入極小的引擎文件,就可以使用 JavaScript 調用任何 Objective-C 的原生接口,替換任意 Objective-C 原生方法。目前主要用于下發 JS 腳本替換原生 Objective-C 代碼,實時修復線上 bug。
?
集成 SDK
1、通過 cocoapods 導入
在 podfile 中添加命令:
pod 'JSPatchPlatform', :git => 'https://github.com/bang590/JSPatchPlatform.git'
再執行 pod install 即可。
2、手動導入
下載 SDK 后解壓,將** JSPatchPlatform.framework** 拖入項目中,勾選 "Copy items if needed",并確保 "Add to targets" 勾選了相應的 target。
pods 導入或手動導入SDK后添加依賴框架:TARGETS -> Build Phases -> Link Binary With Libraries -> + 添加libz.dylib(Xcode7之后是libz.tbd)和 JavaScriptCore.framework。
測試使用
1、測試本地腳本
本地測試?AppDelegate.m?按如下寫法即可,SDK 提供了+testScriptInBundle?方法用于開發狀態下測試。
然后在我們的 demo 中新建一個?empty?文件,叫 main.js,注意這是 JSPatch 平臺規范,js 腳本文件名必須是 main.js。
?
?
現在我們就可以通過在 main.js 寫 js 修復 demo 中的 bug,代碼如下:
defineClass('ViewController', {createJsPatchDemo: function() {console.log("全市污水處理廠在線監控系統9項指標運營維護項目");}, });?
2、線上版本測試
熱修復針對的是線上版本,所以本地測試只是驗證可行性,重要的還是線上 bug 的修復。下面我們進行線上測試。
到?JSPatch官網?注冊,登錄,我的 App,添加 App,獲取 app key,添加 App 版本,發布補丁.
?
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {// Override point for customization after application launch./** */[JSPatch startWithAppKey:@"1b823abb1c059409"];[JSPatch setupRSAPublicKey:@"-----BEGIN PUBLIC KEY-----\nMIG0GKBgQDo9OLb7RYBCsST0Nq7EPRmfcAt\nZ4W6dhPE3Lrew+0JfiUCiTt2ruhPXQLSJN2OcGKVV4eXXR1KxI6BC3yBZvoXF\n/tQ/rIsMgknHMYGnh817tYAq/SSLu6BhfygK40\n6Ixyha1mbfQJwIDAQAB\n-----END PUBLIC KEY-----"];// [JSPatch setupDevelopment];[JSPatch sync];//檢查補丁更新/*用于發布前測試腳本。先把腳本放入項目中,調用后,會在當前項目的 bundle 里尋找 main.js 文件執行測試完成后請刪除,改為調用 +startWithAppKey: 和 +sync[JSPatch testScriptInBundle];*/self.window =[[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];self.window.backgroundColor=[UIColor whiteColor];[self.window makeKeyAndVisible];ViewController *vCont=[[ViewController alloc]init];UINavigationController *nav =[[UINavigationController alloc]initWithRootViewController:vCont];self.window.rootViewController = nav;return YES; }注意:+testScriptInBundle不能與+startWithAppKey:一起調用,+testScriptInBundle只用于本地測試,測試完畢后需要去除,項目中的 main.js 文件也要刪除(可拷貝一份至桌面留作上傳的補丁使用)。另外,通過 JSPatch 平臺上傳的腳本文件都會保存在七牛云存儲上,而七牛云存儲的下載使用的是 http 協議,因此需要在項目的 info.plist 文件中添加如下字段.
通過測試如果項目中其他沒有網絡請求,最新的“補丁”不會被及時下載更新。
?
有OC轉換工具:轉換JS:?轉換JS
平臺原理詳解:如何使用補丁語言:補丁語言
?
總結
- 上一篇: Unity3D 随机颜色(RGB/HSV
- 下一篇: linux查看端口及端口详解