开发者社区> 技术小甜> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

iOS JSPatch 热修复使用

简介:
+关注继续查看

概述

一说到热修复,可能很多人会觉得应该很复杂,很难用(我以前是这么觉得的。。。),实际使用起来蛮简单的,这里以一个小demo演示热修复是如何修复崩溃的,具体更深入的用法,可以看这个
https://github.com/bang590/JSPatch/wiki/JSPatch-%E5%9F%BA%E7%A1%80%E7%94%A8%E6%B3%95

使用

1.下载SDK

打开JSPatch网站,下载SDK:http://jspatch.com/Index/sdk

2.导入依赖库

新建一个项目,名为JSPatchDemo,将下载后的JavaScriptCore.framework文件拖到项目中,并导入libz.dylib(或libz.tbd) 和 JavaScriptCore.framework

 

在AppDelegate里配置,startWithAppKey需要配上自己的Key,在第三步会详细介绍。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    // Override point for customization after application launch.
    [JSPatch startWithAppKey:@"你的APPKey"];    
    //用来检测回调的状态,是更新或者是执行脚本之类的,相关信息,会打印在你的控制台
    [JSPatch setupCallback:^(JPCallbackType type, NSDictionary *data, NSError *error) {
    }];
    
    [JSPatch setupDevelopment];
    
    [JSPatch sync];    
    return YES;
}

在ViewController里写上一个方法为jsPatchTest,用于改变文本的文字。

#import "ViewController.h"@interface ViewController ()
@property (nonatomic, strong) UILabel *label;@end@implementation ViewController- (void)viewDidLoad {
    [super viewDidLoad];
    
    _label = [[UILabel alloc] init];
    _label.font = [UIFont systemFontOfSize:14];
    _label.frame = CGRectMake(50, 100, 150, 50);
    _label.backgroundColor = [UIColor yellowColor];
    [self.view addSubview:_label];
    
    [self jsPatchTest];
}- (void)jsPatchTest {
    self.label.text = @"哈哈哈哈哈哈";
}@end

3、获取AppKey并发布

打开JSPatch官网点击左上角注册 -> http://www.jspatch.com/

点新增APP,随便填写APP名,如:

将AppKey填写到AppDelegate--StartWithAppKey中

点击添加版本,填写和工程目录的一致,如1.0

 创建一个main.js文件并在里面写上以下代码

defineClass('ViewController', {
          jsPatchTest : function() {
          self.label().setText("label的text被改掉了");
          },
})

发布补丁

再次重新打开app,你会发现,会报http的错。。。在info.plist里加上如下代码,允许http访问

<key>NSAppTransportSecurity</key>
<dict> 
  <key>NSAllowsArbitraryLoads</key>
  <true/>
</dict>

总结

总体使用还是比较简单的,更多功能可以去文档中发掘

补充

1、可能很多人都不会写js补丁,好在JSPatch作者还为我们准备了另一个工具。
http://bang590.github.io/JSPatchConvertor/
这个工具可以帮助我们转换OC代码为JS

 

2、JS一定要加密,下面是方法截图和文档:

文档:http://jspatch.com/Docs/rsa














本文转自ljianbing51CTO博客,原文链接:http://blog.51cto.com/ljianbing/1863988 ,如需转载请自行联系原作者



版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
C#编程-97:索引器在类中的使用
C#编程-97:索引器在类中的使用
12 0
JS - 兼容
JS - 兼容
22 0
时序图在SLS中的使用技巧
场景问题 通过SQL分析出实际场景中的数据,如果有数据缺失怎么办? 在折线图中如果有一些显著的异常点,能否主动的标记出来? 能否自定义某个观测指标的区间,在折线图中,添加区间的绘制能力? 能否支持多张图表在相同的时间轴上的联动操作? 基础数据的提取 假设我们现在有一个网站的访问日志,我们去找某个域名("aaa.aliyun.log.com"),访问的路径为("/account/query") 的分钟级别的流量,通过如下SQL,我们可以得到一条时序曲线,我们选择普通的折线图,我们可以发现,折线图中横坐标显示的比较凌乱,没有很好的适应数据本身对时间进行格式化。
1363 0
JS-SDK的使用
JS-SDK使用步骤 步骤一:绑定域名 先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。 备注:登录后可在“开发者中心”查看对应的接口权限。
1140 0
js 分页
第页,共页,每页条 共条 ...
883 0
Cocos2d-JS中的Sprite精灵类
<span style="font-size:14px;">精灵类是cc.Sprite,它的类图如下图所示。cc.Sprite类直接继承了cc.Node类,具有cc.Node基本特征。<br></span><div style="text-align: center;"><img src="http://img.blog.csdn.net/20150325174954171" alt=""><
1420 0
关于DBMS_SQL的使用
PL/SQL中使用动态SQL编程    在PL/SQL程序设计过程中,会遇到很多必须使用动态sql的地方,oracle系统所提供的DMBS_SQL包可以帮助你解决问题。
741 0
Good Bye Critical Jboss 0day
http://blog.mindedsecurity.com/2010/04/good-bye-critical-jboss-0day.
863 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
深入剖析 iOS 性能优化
立即下载
React-Native 在iOS上的性能优化方案
立即下载
聚划算iOS平台动态化方案LuaView
立即下载