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

平台原理详解:如何使用补丁语言:补丁语言

标签:

未经允许不得转载:作者:SheaYang, 转载或复制请以 超链接形式 并注明出处 技术Dog|博客
原文地址:《JSPatch使用》 发布于2019-11-03

分享到:
赞(0) 打赏

评论 抢沙发

4 + 9 =


JSPatch使用

长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu4.0主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?