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

简介:

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

更新记录

2016年3月4日

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

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

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

原文地址:http://www.cnblogs.com/zhanggui/p/5157177.html

一、前言

  场景一:我们在做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

相关文章
|
1月前
|
运维 监控 安全
应用研发平台EMAS常见问题之sophix ios flutter热更新如何解决
应用研发平台EMAS(Enterprise Mobile Application Service)是阿里云提供的一个全栈移动应用开发平台,集成了应用开发、测试、部署、监控和运营服务;本合集旨在总结EMAS产品在应用开发和运维过程中的常见问题及解决方案,助力开发者和企业高效解决技术难题,加速移动应用的上线和稳定运行。
77 0
|
JavaScript 前端开发 iOS开发
iOS中动态更新补丁策略JSPatch运用基础二
iOS中动态更新补丁策略JSPatch运用基础二
141 0
|
JavaScript 前端开发 iOS开发
iOS中动态更新补丁策略JSPatch运用基础一
iOS中动态更新补丁策略JSPatch运用基础一
194 0
|
Android开发 iOS开发 数据格式
Ionic实现iOS与Android端代码『热更新』
热更新的好处 通常ionic源码可包括(HTML,JavaScript,CSS文件和其他资源),往常我们必须通过提交程序到应用市场,经过漫长的审核后才可让用户更新,每改动一个小地方都需要重新打新版本。
2371 0
|
JavaScript 开发工具 iOS开发
|
移动开发 JavaScript 前端开发
iOS 热更新解读(一)APatch & JavaScriptCore
# iOS 动态更新的几种方案 - WebView 加载 HTML5 动态更新。 - React Native/weex js 动态更新。 - lua 脚本文件控制动态更新(代表框架 [WaxPatch](https://github.com/mmin18/WaxPatch) )。 - js
5521 0
|
JavaScript 前端开发 API
iOS 热更新解读(二)—— JSPatch 源码解析
关于 JSPatch 的实现原理,JSPatch 作者本人 [bang](http://blog.cnbang.net/) 已经有一系列文章阐述: - [JSPatch 实现原理详解 核心](http://mp.weixin.qq.com/s?__biz=MzIzNTQ2MDg2Ng==&mid
6470 0
|
JavaScript 前端开发 iOS开发
iOS热更新解读(三)—— JSPatch 之于 Swift
# 继承自 NSObject 的 Swift 类 ## 修改属性 新建 Swift 工程 `SwiftJSPatch`。 `AppDelegate.swift`: ```Swift // in AppDelegate.swift ---------------- func applica
7268 0