首页
学习
活动
专区
工具
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.5K80

JSPatch Platform平台的简单使用

https://blog.csdn.net/u010105969/article/details/52625197 JSPatch Platform是JSPatch的一个平台,使用此平台是为了使用...JSPatch,如果大家不了解JSPatch可以网上搜一下,有很多专业的解释,我这里只做一些简单的介绍。...根本原理:利用OC的动态语言特性去动态修改类的方法实现 实现巧妙之处:利用了OC的消息转发机制 要使用JSPatch是需要一个JSPatch平台的,那么什么是JSPatch平台?...JSPatch Platform就是一个第三方的JSPatch平台,这里就简单滴说说如何使用此平台。(这不是打广告!这不是打广告!这不是打广告!)...首先需要登录官网注册 (http://jspatch.com),成为它的一个用户。然后就可以添加自己要使用JSPatch的App了。

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

    【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 热补丁实时修复bug

    JSPatch的出现,有效的解决了这一尴尬的局面。 热修复 一种即时修复bug的技术,也叫hotfix。 什么是JSPatch?...JSPatch是一个一个动态更新的开源的框架,可以实时的修复bug(热修复)、添加新功能。...,然后在在自己搭建下发补丁的服务器,也可以直接用JSPatch平台集成的带代码下发功能的SDK,我们只需要写好补丁,直接就可以在这个平台下发了。...步骤如下: 第一步:在JSPatch平台注册一个帐号; 第二步:创建一个app; 第三步:下载JSPatch SDK,这个跟github上的不一样,github上的是开源的,不带代码下发服务器的。...在JSPatch初始化的方法中,打开沙盒测试方法[JSPatch testScriptInBundle];,并注释掉其他JSPathch方法。

    57310

    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

    64120

    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.2K70

    价值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.4K100

    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之类的类似,是影响编译效率的,尤其对启动速度影响比较大。

    1K30

    苹果为什么不封杀 Flutter ?

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

    86920

    🤔 如何隐藏你的热更新 bundle 文件?

    对于热更新技术,Apple 在 2017 年封杀过一次 JSPatch[1] 这个热更新框架,导致很多的 APP 被拒审,根据 Apple 官方给出的理由,主要有三点: 热更新代码没有做好加密和校验,...有可能被第三方破解劫持 JSPatch 权限过高,可能会调用私有 API,改变原有的 APP 功能 对于 Apple 官方来说,JSPatch 自由度太大,会绕过 App Store 这个 iOS 上的唯一流量分发平台更新应用...其实对于 Apple 官方来说,对与动态化热更新的态度向来是不赞成也不反对,和 JSPatch 比起来,React Native 和游戏热更新这两种应用场景还是被允许的,主要还是体现在三点: 网游这种重运营的场景还是需要热更新维持活动热度的...,每周都有新活动,让用户主动去 App Store 下载更新包很不合理,App 活动运营同理 React Native/Lua 等热更新技术是在一个容器里进行动态化的,不像 JSPatch 有那么大的修改权限...参考资料 [1] JSPatch: https://github.com/bang590/JSPatch [2] 《Apple Developer Program License Agreement》:

    2.6K21
    领券