----------------------------------------------------------------------------------------------------------------------------

更新记录

2016年3月4日

JSPatch官方网址:http://jspatch.com/

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

----------------------------------------------------------------------------------------------------------------------------

一、前言

  场景一:我们在做iOS开发的过程中,难免会由于自己的不细心导致一些小问题。如果产品没上线之前发现还好,如果上线了才发现问题,那么问题就大了,可能直接影响KPI,更严重的甚至直接面临着fire。

  场景二、一旦上线的产品,如果临时遇到需求变动,那么久必须重新修改代码。一旦修改了项目代码的话,我们就必须重新发版。这样岂不是很麻烦?

  现在就来让我们看一下JSPatch,它的出现可以在不发版的情况下动态的自行修复或者添加新的需求。

二、JSPatch简介  

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

    https://github.com/bang590/JSPatch

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

三、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代码就可以修改程序的效果。

四、项目中的使用

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

五、更多

  更多使用可以查看其github主页。

六、附

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

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

iOS第三方类库JSPatch(热更新)的更多相关文章

  1. JSPatch热更新的利器.

    如果用一句话来描述JSPatch,就是利用系统自带的JavaScriptCore.framework配合RunTime机制,进行实时的代码下载与运行.. 而且使用也很简单,启动,加载JS,运行... ...

  2. iOS 第三方类库之MBProgressHUD

    github链接地址 MBProgressHUD是一个开源的第三方类库实现了很多种样式的提示框,类似Activity indicator,使用上简单.方便,并且可以对显示的内容进行自定义,功能很强大, ...

  3. iOS第三方类库汇总【持续更新】

    在我们平时开发中会经常使用一些第三方开发的开源类库.这样会有效地提高我们开发项目的效率,在这里我找了好几十个进行一个汇总,供大家参考使用,方便大家在需要的时候能容易找到. UI篇 awesome-io ...

  4. JSPatch 热更新

    JSPatch 是一个 iOS 动态更新框架,只需在项目中引入极小的引擎,就可以使用 JavaScript 调用任何 Objective-C/Swift 原生接口. 获得脚本语言的优势,为项目动态添加 ...

  5. iOS热更新-8种实现方式

    一.JSPatch 热更新时,从服务器拉去js脚本.理论上可以修改和新建所有的模块,但是不建议这样做. 建议 用来做紧急的小需求和 修复严重的线上bug. 二.lua脚本 比如: wax.热更新时,从 ...

  6. iOS热更新实现方式

    heart.jpg 苹果静止热更新,可惜我的是企业app,没有这些约束了,随便用.(当然有些热更新已经可以通过苹果审核了,比如JSPatch)官网说的: JSPatch 平台 SDK 1.7.2 以上 ...

  7. 有关iOS热更新

    iOS热更新的几篇文章,看完这几篇,自己集成一下.下面说一下我集成时遇到的问题. 这是原作者的JSPatch的讲解的文章:<JSPatch – 动态更新iOS APP>.<JSPat ...

  8. React Native之code-push的热更新(ios android)

    React Native之code-push的热更新(ios android) React Native支持大家用React Native技术开发APP,并打包生成一个APP.在动态更新方面React ...

  9. Unity应用的iOS热更新

    Unity应用的iOS热更新 作者:丁治宇 Unity TechnologiesChina Agenda •  什么是热更新 •  为何要热更新 •  如何在iOS 上对Unity 应用进行热更新 • ...

随机推荐

  1. LED子系统剖析

    写之前,先看一张图: 上次说了LED驱动程序,Linux自身也携带了LED驱动,且是脱离平台的,即LED子系统.操作起来十分简单.但是它的实质却不是那么容易,研究了一个晚上,终于明白了其中一个文件的功 ...

  2. html5中的大纲

    html5中的大纲 前言: 在html5中我们可以使用结构元素来编排一份大纲,这样我们就可以通过这个网页的大纲来了解网页中有哪些内容,网页中以什么样的形式来组织这些内容有更清楚的认识. 1.html5 ...

  3. angular设置title

    Javascript框架在处理seo方面存在问题,因为爬虫在检索seo信息的时候会读不了js给其赋的值,导致搜索引擎收录不了或者收录了无效的信息,比如收录的可能是title={{title}}这样的, ...

  4. Sprint总结

    # Sprint 1 总结 > Sprint 1 主要是界面设计 > 为了遵循Material design,实际操作中依然遇到许多困难 > 预计耗时两小时每天,但是因为网络问题工作 ...

  5. dos系统

    实验一  命令解释程序的编写 一.目的和要求 1. 实验目的 (1)掌握命令解释程序的原理: (2)掌握简单的DOS调用方法: (3)掌握C语言编程初步. 2.实验要求 编写类似于DOS,UNIX的命 ...

  6. Qt Style Sheet实践(一):按钮及关联菜单

    导读 正如web前端开发中CSS(Cascade Style Sheet)的作用一样,Qt开发中也可以使用修改版的QSS将逻辑业务和用户界面进行隔离.这样,美工设计人员和逻辑实现者可以各司其职而不受干 ...

  7. C#设计模式——观察者模式(Observer Pattern)1

    一.概述在软件设计工作中会存在对象之间的依赖关系,当某一对象发生变化时,所有依赖它的对象都需要得到通知.如果设计的不好,很容易造成对象之间的耦合度太高,难以应对变化.使用观察者模式可以降低对象之间的依 ...

  8. C#实用杂记-EF全性能优化技巧2

    原文链接: http://www.cnblogs.com/zhaopei/p/5721789.html

  9. OAuth2.0 基础概述

    web:http://oauth.net/2/ rfc:http://tools.ietf.org/html/rfc6749 doc:http://oauth.net/documentation/ c ...

  10. oracle user account locked

    1.Question describe when you use account scott/tiger connect to oracle, you will see "the user ...