JSPatch】的更多相关文章

本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/579efa7083355a9a57a1ac5b Dev Club 是一个交流移动开发技术,结交朋友,扩展人脉的社群,成员都是经过审核的移动开发工程师.每周都会举行嘉宾分享,话题讨论等活动. 本期,我们邀请了腾讯WXG iOS开发工程师——bang 陈振焯,为大家分享<JSPatch成长之路>. 如何加入 Dev Club? 移动端开发经验 >= 2 年,微信扫描下方群管…
JSPatch的作用是什么呢? 简单来说:(后面有具体的操作步骤以及在操作过程中会出现的错误) 1.iOS应用程序上架到AppStore需要等待苹果公司的审核,一般审核时间需要1到2周.虽然程序在上架前会经过测试人员的测试,但有时候还是不免会发生新版本上线后出现严重的bug,导致用户刚升级到新版本就出现crash,严重影响用户体验. 2.这时能做的只是赶紧修复bug然后提交等待漫长的AppStore审核,再盼望用户快点升级,才能完成此次bug的修复,这样及容易导致用户流失,这对企业来说影响非常严…
1.JSPatch 准备 地址:https://github.com/bang590/JSPatch 框架:libz.1.tbd , JavaScriptCore.framework 2.cocospod(可得到的三个文件) JPEngine.h,JPEngine.m,JSPatch.js 3.Demo(重要的三个文件夹) Extensions,JSPatch,Loader ********测试******** 1.在本地生成一个main.js文件 require('SecondViewCont…
如果用一句话来描述JSPatch,就是利用系统自带的JavaScriptCore.framework配合RunTime机制,进行实时的代码下载与运行.. 而且使用也很简单,启动,加载JS,运行... [JPEngine startEngine]; NSString *sourcePath = [[NSBundle mainBundle] pathForResource:@"demo" ofType:@"js"]; NSString *script = [NSStri…
今天研究了一下JSPatch,发现好神奇好奇妙,感觉这几天我都会乐此不彼的去研究这个高大上的东西. 出处来着:https://github.com/bang590/JSPatch 简单介绍一下这个 defineClass 方法,文档中是这样写的(bang590/JSPatch ) defineClass(classDeclaration, instanceMethods, classMethods) @param classDeclaration: 字符串,类名/父类名和Protocol @pa…
ios 由于苹果的审核政策,一旦上线后发现bug是件让人崩溃的事情 不过可以利用oc的runtime机制可以家用JSPatch动态的为工程打热补丁 下载地址:https://github.com/agelessman/JSPatch.git 如果不用cocoapods导入的话,不需要修改,如果拖到工程的,需要改头文件, 例如: #import “abc.h” 在appdelegate中添加类似下边的方法,写一个本地的属性记录补丁的版本号,如果文件存在,再调用 - (void)hotfix { /…
hotfix的作用众所周知,Android和iOS都有各自的技术,但是相比Android的当天发布来说(如果你们的项目不需要灰度),iOS热更新的意义更加重大.因为iOS审核周期长不说,而且运气不好会遇到各种被拒,即使申请快速审核,也必须满足二者之一:能够准确的告诉苹果复现crash的步骤,或者在特殊节日附近. 可能你费劲周折的提心吊胆和那么多天其实也就是在某个类中加三行代码. 1.简单介绍 在没有JSPatch之前,可能有人会使用过JSCocoa.但是有着一系列复杂问题,比如源码已经多年没有维…
链接: JSPatch github项目主页 JSPatch技术文档 JSPatch基础用法总结 JSPatch – 动态更新iOS APP JSPatch使用小记 end…
关于HotfixPatch 在IOS开发领域,由于Apple严格的审核标准和低效率,IOS应用的发版速度极慢,稍微大型的app发版基本上都在一个月以上,所以代码热更新(HotfixPatch)对于IOS应用来说就显得尤其重要. 现在业内基本上都在使用WaxPatch方案,由于Wax框架已经停止维护四五年了,所以waxPatch在使用过程中还是存在不少坑(比如参数转化过程中的问题,如果继承类没有实例化修改继承类的方法无效, wax_gc中对oc中instance的持有延迟释放...).另外苹果对于…
最近正式在线上项目中集成了jspatch进行热修复,这里做一个简单的总结. 工具篇: 首先,用xcode来编辑js非常困难,基本上没有缩进,完全需要手写:经过研究发现使用 Sublime text3 结合 jsformat 插件,可以很好的编辑js脚本. 一般来说,我们可以使用JSConvertor对js进行转换,然后在sublime text中进行编辑和格式化,通过xcode run代码来查看效果. 一次热修复实践中遇到的转换问题: 1. js是动态类型的语言,因此所有的类型转换代码全部需要删…
本文参考JSPatch wiki :https://github.com/bang590/JSPatch/wiki 1.概念 JSPatch是一个轻量的JS引擎,能够使用JavaScript语言来调用任何object-c接口,替换任何原生的方法.目前主要用于发步JS脚本替换原生Objective-C代码,实时修复线上bug 2.原理 利用OC语言的动态性,动态的修改类的方法和属性.在app启动的时候加载我们写好的JavaScript文件并通过JavaScriptCore来执行,用JS写好的类函数…
原文地址:https://github.com/bang590/JSPatch/wiki/JSPatch%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98%E8%A7%A3%E7%AD%94 一.block使用规则 1.在 JSPatch 若要向 Objective-C 传递 block,需要使用 block(paramTypes, function) 函数封装:Block的详细使用方法,封装后的值已经不是 JS 函数,不能直接在 JS 上调用: var blk = blo…
原文地址https://github.com/bang590/JSPatch/wiki/JSPatch-%E5%AE%9E%E7%8E%B0%E5%8E%9F%E7%90%86%E8%AF%A6%E8%A7%A3 JSPatch 是一个 iOS 动态更新框架,只需在项目中引入极小的引擎,就可以使用 JavaScript 调用任何 Objective-C 原生接口,获得脚本语言的优势:为项目动态添加模块,或替换项目原生代码动态修复 bug. 之前在博客上写过两篇 JSPatch 原理解析文章(1 …
原文:http://blog.cnbang.net/works/2767/ JSPatch是最近业余做的项目,只需在项目中引入极小的引擎,就可以使用JavaScript调用任何Objective-C的原生接口,获得脚本语言的能力:动态更新APP,替换项目原生代码修复bug. 用途 是否有过这样的经历:新版本上线后发现有个严重的bug,可能会导致crash率激增,可能会使网络请求无法发出,这时能做的只是赶紧修复bug然后提交等待漫长的AppStore审核,再盼望用户快点升级,付出巨大的人力和时间成…
今天和同事聊到JSPatch热修复,我们来看下JSPatch,确实解决了APP升级的痛点. 刚好,已经有这么一个第三方平台实现了后台管理,全套服务(网址是:http://jspatch.com/),先看一下关于JSPatch的介绍: JSPatch 是一个开源项目(Github链接),只需要在项目里引入极小的引擎文件,就可以使用 JavaScript 调用任何 Objective-C 的原生接口,替换任意 Objective-C 原生方法.目前主要用于下发 JS 脚本替换原生 Objective…
JSPatch 是一个开源项目(Github链接),只需要在项目里引入极小的引擎文件,就可以使用 JavaScript 调用任何 Objective-C 的原生接口,替换任意 Objective-C 原生方法.目前主要用于下发 JS 脚本替换原生 Objective-C 代码,实时修复线上 bug.除了实时修复线上 bug,甚至为 APP 动态添加一个模块也是可行的,不过可能会有性能问题.使用JSPatch 需要有一个后台可以下发和管理脚本,并且需要处理传输安全等部署工作.目前有一个JSPatc…
概述 一说到热修复,可能很多人会觉得应该很复杂,很难用(我以前是这么觉得的...),实际使用起来蛮简单的,这里以一个小demo演示热修复是如何修复崩溃的,具体更深入的用法,可以看这个https://github.com/bang590/JSPatch/wiki/JSPatch-%E5%9F%BA%E7%A1%80%E7%94%A8%E6%B3%95 实现原理:https://github.com/bang590/JSPatch/wiki/JSPatch-实现原理详解 使用 1.下载SDK 打开J…
限于iOS AppStore的审核机制,一些新的功能的添加或者bug的修复,想做些节日专属的活动等,几乎都是不太可能的.从已有的经验来看,也是有了一些比较常用的解决方案.本文先是会简单说明对比大部分方案,然后会注重阐述基于JSPatch的在线更新机制的设计和实现.对于任何一家有一定用户基础的iOS应用来说,在线更新技术所产生的直接和间接价值都将远远超过100W.理解,并掌握它;实在没有时间,就记住它,因为这篇文章不仅仅是讨论. 实例地址:https://github.com/ios122/ios…
---------------------------------------------------------------------------------------------------------------------------- 更新记录 2016年3月4日 JSPatch官方网址:http://jspatch.com/ OC转JS代码工具:http://bang590.github.io/JSPatchConvertor/ -------------------------…
JSPatch一些自己使用后的发现: 1.JS不区分整数和浮点数.解析字典以后的value不需要通过 floatValue等方法转换,而是自动就转换成对应的数据类型. 2.nil在JSPatch中 不能使用,如果是用if(a == nil)应该用if(!a)来代替. 3.self.view.setFrame({x:0,y:0,width:100,height:100}); 设置frame必须这种格式,如果是CGSize那么就在括号里写上{width:100,height:100}.当我们需要获得…
所谓动态热修补就是把能够导致app 崩溃的严重bug,提交新版本到appstore 审核速度太慢影响用户使用,这时候就可以利用 JSPatch 可以让你用 JavaScript 书写原生 iOS APP.只需在项目引入极小的引擎,就可以使用 JavaScript 调用任何 Objective-C 的原生接口,获得脚本语言的优势:为项目动态添加模块,或替换项目原生代码动态修复 bug. 这里就不在赘述优缺点重点看实现! (一)首先在终端 pod search JSPatch 接下来就可以自己pod…
IOS产品开发中常常会遇到这种情况,线上发现一个严重bug,可能是一个crash,可能是一个功能无法使用,这时能做的只是赶紧修复Bug然后提交等待漫长的审核,即使申请加急也不会快到那里去,即使审核完了之后,还要盼望着用户快点升级,用户不升级还是在存在同样的漏洞,这样的情况让开发者付出了很大的成本才能完成Bug的修复. JSPath就是为了解决这样的问题而出现的,只需要在项目中引入极小的JSPatch引擎,就可以还用JavaScript语言调用Objective-C的原生API,动态更新APP,修…
1. 背景 Aspects 和 JSPatch 是 iOS 开发中非常常见的两个库.Aspects 提供了方便简单的方法进行面向切片编程(AOP),JSPatch可以让你用 JavaScript 书写原生 iOS APP 和进行热修复.关于实现原理可以参考 面向切面编程之 Aspects 源码解析及应用 和 JSPatch wiki.简单地概括就是将原方法实现替换为_objc_msgForward(或_objc_msgForward_stret),当执行这个方法是直接进入消息转发过程,最后到达替…
swift使用JSPatch要点: 继承自NSObject的Swift类,其继承自父类的方法具有动态性,其他自定义方法.属性需要加dynamic修饰才可以获得动态性(public属性除外) 例子可参看项目中的:demo1.js, demo1_1.js, demo2.js 纯Swift类没有动态性.也就是说无法重写纯swift类的方法和属性.demo6,demo7 JSPatch在进行到overrideMethod进行方法实现IMP替换时要求class实现NSCoping协议,而不继承自NSObj…
什么是热更新? 举个例子,你的app上架了,但是突然想添加个小功能,那么你有两种方法 第一种方法:在原生代码中修改源代码,然后提交到appStore,这个过程真是很漫长...虽然最近我提交的都是一两天就能得到反馈,但是没人能保证苹果的服务态度一直这样好.有可能10天半个月的也没时间给你审核.我把这个称为冷更新! 第二种方法:就是利用一些三方平台.现在比较火的就是JSPatch之前有(Wax)了. 用官网 的介绍JSPatch 是一个开源项目(Github链接),只需要在项目里引入极小的引擎文件,…
在这次 GMTC 大会上,我见到了 JSPatch 的作者 bang.在这之前我就和他在网上认识并聊过很多次,bang 也在这个公众号上投稿发表了多篇关于 JSPatch 的文章,包括:JSPatch – 动态更新iOS APP,JSPatch 实现原理详解,JSPatch 实现原理详解 (二),. 在我心目中,bang 是一个年轻.内向的小孩.说他内向,是因为我有一次去微信交流技术,他竟然默默在后面听完就走掉了...掉了...了.完全不顾我和他已经在网上认识许久这件事实. 说他年轻,是因为他在…
本文贴出项目中热修复的代码片段: require('UIView, JPObject, HtmlAllViewController,DataManager,EMClient,EaseMessageViewController') defineClass("GHAcceptOrderViewController", { tableView_willSelectRowAtIndexPath: function(tableView, indexPath) { var row = indexP…
一.背景需求介绍 为什么我们需要一个热修复(hot-fix)技术? 工作中容易犯错.bug难以避免. 开发和测试人力有限. 苹果Appstore审核周期太长,一旦出现严重bug难以快速上线新版本. 作为生产力工具,用户有对稳定性和可靠性的需求. 二.JSPatch简介 JSPatch诞生于2015年5月,最初是腾讯广研高级iOS开发@bang的个人项目. 它能够使用JavaScript调用Objective-C的原生接口,从而动态植入代码来替换旧代码,以实现修复线上bug. JSPatch在Gi…
今天一早,不少iOS开发群都炸窝了,原因是部分iOS开发者收到了苹果的警告邮件: 有开发者质疑可能是项目中使用了JSPatch.weex以及ReactNative等热更新技术.对于修复bug提交审核的开发者来说,热更新技术可以帮开发者避免长时间的审核等待以及多次被拒造成的成本开销.但也给黑客留了后门,也就违反了苹果的安全和隐私政策. 不过这次苹果只是对使用热更新的应用进行了警告,并没有开发者反应产品因此问题被下架. 对此,开发者表示: 舞小月:苹果注重的就是流畅性和用户体验,混编做的东西肯定没有…
.1.4) JSPatch bridge Objective-C and JavaScript. You can call any Objective-C class and method in JavaScript by just including a small engine. pod 'JSPatch', '~> 0.1.4' - Homepage: https://github.com/bang590/JSPatch - Source: https://github.com/bang5…