本文为转载文章 . 版权归原文全部。git
原文连接:iOS 5分钟集成热修复(JSPatch)github
在iOS中有不少种热修复方案,在这里我就不一一介绍了swift
这里有一篇介绍热修复的文章:
iOS中的HotFix方案总结详解服务器
我选择的热修复方案是JSPatch
我以为JSPatch的优势有:app
大神能够看重点,若是是和我同样的菜鸡就能够按照博客一步一步作,最后必定会成功让JSPatch跑起来的jsp
OC:ide
Swift:测试
为了方便label就直接在StoryBoard里拖进来了(不喜欢拖控件的小伙伴能够用代码建立)网站
Swift中为每一个变量和方法添加dynamic是保证Swift方法均可以被动态替换,这里涉及到Swift Runtime的知识就不详细讲述了按例贴一篇文章:ui
Swift Runtime分析:还像OC Runtime同样吗?
OC
- (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; }
Swift
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { // Override point for customization after application launch. JSPatch.startWithAppKey("你的Appkey") JSPatch.setupCallback { (type, data, error) in print(type) print(data) } JSPatch.setupDevelopment() JSPatch.sync() return true }
OC
defineClass('ViewController', {
test : function() {
self.label().setText("label的text被改掉了"); }, })
Swift
defineClass('HotFixDemo.ViewController', {
test : function() {
self.label().setText("label的text被改掉了"); }, })
发现bug->在项目里修复bug->将修改后的有问题的类和方法翻译成js并上传网站->发布补丁
JS必定要加密,下面是方法截图和文档:
文档:http://jspatch.com/Docs/rsa
加密方法: