iOS第三方类库JSPatch(热更新)

----------------------------------------------------------------------------------------------------------------------------html

更新记录git

2016年3月4日github

JSPatch官方网址:http://jspatch.com/服务器

OC转JS代码工具:http://bang590.github.io/JSPatchConvertor/app

----------------------------------------------------------------------------------------------------------------------------jsp

1、前言工具

  场景一:咱们在作iOS开发的过程当中,不免会因为本身的不细心致使一些小问题。若是产品没上线以前发现还好,若是上线了才发现问题,那么问题就大了,可能直接影响KPI,更严重的甚至直接面临着fire。ui

  场景2、一旦上线的产品,若是临时遇到需求变更,那么久必须从新修改代码。一旦修改了项目代码的话,咱们就必须从新发版。这样岂不是很麻烦?lua

  如今就来让咱们看一下JSPatch,它的出现能够在不发版的状况下动态的自行修复或者添加新的需求。spa

2、JSPatch简介  

  JSPatch:它是一个第三方类库,地址以下:

    https://github.com/bang590/JSPatch

  它是JavaScript和OC之间的桥梁,你能够在js文件中去调用任何OC类和方法,而后在js文件中去动态修改OC类。达到不从新发版就更新的效果。它主要是使用的OC runtime实现的。咱们可使用它热更新本身的iOS app。

3、JSPatch使用

  首先,咱们去这里下载,而后导入项目工程里面。(我的比较推荐使用cocoapods导入)而后咱们在AppDelegate中导入:

#import "JPEngine.h"

而后添加以下代码在

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{

添加以下:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [JPEngine startEngine];
    NSString *sourcePath = [[NSBundle mainBundle] pathForResource:@"demo" ofType:@"js"];
    NSString *script = [NSString stringWithContentsOfFile:sourcePath encoding:NSUTF8StringEncoding error:nil];
    [JPEngine evaluateScript:script];
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.window.rootViewController = [ViewController new];
    [self.window makeKeyAndVisible];
    return YES;
}

其中的demo.js就是咱们须要手动去写的一个js代码:

require('UIView,UIColor');

defineClass('ViewController',{

changeBGColor:function() {

var view = self.view();

view.setBackgroundColor(UIColor.yellowColor());

return view;

}

});

咱们能够简单看一下demo.js的内容。其中的ViewController就是咱们须要更改的类的类名,changeBGColor就是类ViewController中的一个方法,咱们能够经过该js去重写该方法,达到不更新OC代码就能够修改程序的效果。

4、项目中的使用

  这里就只是简单的说一下使用,咱们可让后台写一个接口,经过该接口去拿到服务器上的js文件,而后动态修改服务器上js文件,就能够达到热更新的效果。

5、更多

  更多使用能够查看其github主页。

6、附

  源码地址:http://pan.baidu.com/s/1qXvGNGK

 

转载请标注原文地址:http://www.cnblogs.com/zhanggui/p/5157177.html

相关文章
相关标签/搜索