首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JSPatch 实现原理详解

JSPatch 是一个 iOS 动态更新框架,只需在项目中引入极小的引擎,就可以使用就可以使用 JavaScript 调用任何 Objective-C 原生接口,获得脚本语言的优势:为项目动态添加模块,...微信 iOS 客户端使用了 JSPatch,本篇文章详细阐述 JSPatch 的实现原理和一些细节,以帮助使用者更好地了解和使用 JSPatch。文章较长,建议在 PC / Mac 观看。...4.新增方法 i.方案 在 JSPatch 刚开源时,是不支持为一个类新增方法的,因为觉得能替换原生方法就够了,新的方法纯粹添加在 JS 对象上,只在 JS 端跑就行了。...总结 JSPatch 的原理以及一些实现细节就阐述到这里,因为公众号字数限制的关系,还有一章细节方面的解析没在这里放上,有兴趣的请点击[阅读原文]到 github 上看完整版本。...希望这篇文章对大家了解和使用 JSPatch 有帮助,欢迎在 github 一起参与开发完善 JSPatch: https://github.com/bang590/JSPatch

3.3K80

JSPatch Platform平台的简单使用

JSPatch,如果大家不了解JSPatch可以网上搜一下,有很多专业的解释,我这里只做一些简单的介绍。...根本原理:利用OC的动态语言特性去动态修改类的方法实现 实现巧妙之处:利用了OC的消息转发机制 要使用JSPatch是需要一个JSPatch平台的,那么什么是JSPatch平台?...这时我们需要在Xcode中创建一个main.js文件,创建一个空文件即可, ? 命名为main.js....initWithTitle_message_delegate_cancelButtonTitle_otherButtonTitles("bug修复了","是不是很神奇", null,"取消","确定", null);     av.show(); } }) 然后将main.js...上传main.js脚本文件: ? 点击选取文件选择我们导出的main.js文件即可。然后运行Xcode,再点击屏幕就不会再发生崩溃的问题了。

54320
您找到你想要的搜索结果了吗?
是的
没有找到

iOS之JSPatch 热补丁实时修复bug

JSPatch的出现,有效的解决了这一尴尬的局面。 热修复 一种即时修复bug的技术,也叫hotfix。 什么是JSPatch?...第六步:我们用在桌面上新建一个main.js文件,打开命令后,cd到桌面,输入touch main.js后回车,在桌面就会生成一个main.js文件,用文本编辑器打开。...第七步:测试补丁的有效性 在下发补丁之前,我们可以验证补丁是否凑效,具体做法是: 将我们刚刚编辑的main.js导入项目根目录,选择copy。...在JSPatch初始化的方法中,打开沙盒测试方法[JSPatch testScriptInBundle];,并注释掉其他JSPathch方法。...运行程序,该测试方法会自动在沙盒下寻找main.js文件并执行,以验证bug是否被修复。 第八步:下发补丁 在上一步补丁有效性验证成功之后,去JSPatch平台下发补丁。

53110

【Dev Club分享】JSPatch成长之路

(此内容已在 GMTC 线下分享过,本次重新整理为线上分享) 内容大体框架: 起步:介绍 JSPatch 的诞生和当时碰到的难题 发展:介绍 JSPatch 如何补全周边功能变得更好用 下一步:介绍 JSPatch...我在去年5月发布了 JSPatch (https://github.com/bang590/JSPatch) 这个开源库,现在广泛应用于 iOS 的热修复,今天分享一下 JSPatch 过去一年以来的成长...分享共分为三个部分: 起步 —— 介绍JSPatch的诞生和当时碰到的难题 发展 —— 介绍JSPatch如何补全周边功能变得越来越好用 下一步 —— 介绍JSPatch下一步的计划 一、起步 先说下起步阶段...对此我搭建了 JSPatch 平台 (http://JSPatch.com), 让使用 JSPatch 的人不需要搭建后台,直接通过平台下发补丁代码。 ?.../JSPatch/wiki/JS-%E6%96%AD%E7%82%B9%E8%B0%83%E8%AF%95 最后,欢迎大家关注 JSPatch 公众号:JSPatchDev,会即时推送 JSPatch

1.6K40

iOS中动态更新补丁策略JSPatch运用基础二

iOS中动态更新补丁策略JSPatch运用基础二 一、引言     上篇博客中介绍了iOS开发中JSPatch引擎进行动态热修复的一些基础功能,其中包括向Objective-C类中添加类方法与成员方法...本篇博客将基于上一篇继续介绍Objective-C中的一些特殊数据类型在JavaScript文件中的使用方法,博客中大部分内容扩展自JSPatch开源git的wiki:https://github.com.../bang590/JSPatch。...iOS中动态更新补丁策略JSPatch运用基础一:http://my.oschina.net/u/2340880/blog/646688。...二、JavaScript与Objective-C交互的几种常用类型 1.结构体      在Objective-C代码中,我们经常会使用到结构体,JSPatch中原生支持的结构体有如下几种:CGPoint

62320

JSPatch库, 一个Apple官方支持的实现在线更新iOS应用的库

简介 项目主页: https://github.com/bang590/JSPatch 示例下载: https://github.com/ios122/ios122 JSPatch 可以让你用 JavaScript...优势 在项目中引入JSPatch,就可以在发现bug时下发JS脚本替换原生方法,可以做到无需更新整个APP即时修复bug!...JSPatch用iOS内置的 JavaScriptCore.framework作为引擎;JSPatch也符合苹果的规则。...手动导入 下载https://github.com/bang590/JSPatch并解压 复制JSPatch文件夹到你的工程 使用 objective-C: 导入头文件#import "JPEngine.h...可以通过新增扩展为自己项目里的 struct 类型以及C函数添加支持,详情请见wiki页面:添加新扩展 安全性 JSPatch非常强大,因而最好将通过服务器获取JS的链接进行加密,本地JS也最好加密处理

1.1K70

价值100W的经验分享: 基于JSPatch的iOS应用线上Bug的即时修复方案,附源码.

方案四: 基于JSPatch实现在线补丁式更新 方法: 在自己的项目中引入JSPatch库,然后参见下文继续讨论的方案细节实施即可.JSPatch的入门使用 优点: 支持操作所有工程中引入的CocoaTouch....另外,不得不说一句,JSPatch + ReactNatvie 将来或许会成为一个很强力的组合,前者侧重于Bug的修复,后者侧重于复杂新需求的添加.本文接下来的篇幅将注重讨论基于JSPatch的线上Bug...关于使用JSPatch几个技术点的分析与实现....的在线更新补丁实践http://jspatch.com/Docs/security: JSPatch脚本的执行权限很高,若在传输过程中被中间人篡改,会带来很大的安全问题,为了防止这种情况出现,我们在传输过程中对...关于 APPstore 审核 我们的App,嵌入了JSPatch来进行Bug修复,已经通过审核,并且刚好修复了一个很紧急的Bug.这里不做过多的口水式的讨论.

1.3K100

Bugly 针对 Apple 审核规则调整的使用公告

iOS 应用开发常用的热更新方案有:JSPatch,React Native(RN),Weex,以及国外的 Rollout。...截至目前,开发者们发现苹果主要禁止的是 JSPatch 和 Rollout 两家,以及集成了 JSPatch 的第三方 SDK,如个推,高德等,因其可以通过 JS 脚本来调用和替换任意 OC 方法。...Rollout 的 CEO 的官网声明 JSPatch 作者 bang 也在今天发表博客回应,建议开发者短时间内先不要使用 JSPatch,后续再看情况,并希望可以跟苹果审核团队协商解决此事,毕竟热更新的需求很大...博客链接:http://blog.cnbang.net/internet/3374/ Bugly 针对 Apple 审核规则调整的使用公告 我们近期上线的 Bugly iOS 热更新 SDK 内也集成了 JSPatch

2.5K40

Apple为什么不封杀 Flutter,以后会封杀吗

以后会不会封杀呢,就像之前的JSPatch等。 RN、Weex、小程序 首先,让我们先来认识下RN和Weex。...关于动态性方面本身具有一定的审核风险,这里明确表示是不合规的,参考审核规则 2.5.2 苹果动态性审核条款,只不过 RN 和 Weex 的风险不如当年的 JSPatch 那么大,所以Apple方面也是睁一只眼闭一只眼...而当年的JSPatch 等热修复解决方案则是通过底层操作使得开发者可以用 JS 语言调用任意原生代码,这直接导致了用户 App 在苹果审核之后,依然可能做大范围的改动,这会使得苹果的审核机制形同虚设。...想象一下,你一个明面上说是新闻类的 App,审核通过后摇身一变变成了博彩 App,你说合不合规,既影响 App Store 整体的体验,更会给苹果带来系统性的合规问题,这是一大封杀 JSPatch 的原因...而JSPatch这类东西,就和Android原生的热修复框架Tinker之类的类似,是影响编译效率的,尤其对启动速度影响比较大。

94230

苹果为什么不封杀 Flutter ?

更多追求的是跨平台能力,在做这个方案的同时正好也具备了动态化能力,关于动态性方面本身具有一定的审核风险,这里明确表示是不合规的,参考审核规则 2.5.2 苹果动态性审核条款,只不过 RN 和 Weex 的风险不如当年的 JSPatch...那么大; JSPatch 等热修复解决方案通过底层操作使得开发者可以用 js 等语言调用任意原生代码,这直接导致了用户 App 在苹果审核之后,依然可能做大范围的改动,这会使得苹果的审核机制形同虚设,...想象下你一个明面上说是新闻类的 App,审核通过后摇身一变变成了博彩 App,你说合不合规,既影响 App Store 整体的体验,更会给苹果带来系统性的合规问题,这是一大封杀 JSPatch 的原因,

81120
领券