JSPatch

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

我与影子孤独终老i 提交于 2020-12-23 20:32:52
iOS中动态更新补丁策略JSPatch运用基础 JSPatch是GitHub上一个开源的框架,其可以通过Objective-C的run-time机制动态的使用JavaScript调用与替换项目中的Objective-C属性与方法。其框架小巧,代码简洁,并且通过系统的JavaScriptCore框架与Objective-C进行交互,这使其在安全性和审核风险上都有很强的优势。Git源码地址: https://github.com/bang590/JSPatch 。 一、从一个官方的小demo看起 通过cocoapods将JSPath集成进一个Xcode工程中,在AppDelegate类的中编写如下代码: - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { //开始初始化引擎 [JPEngine startEngine]; //读取js文件 NSString *sourcePath = [[NSBundle mainBundle] pathForResource:@"demo" ofType:@"js"]; NSString *script = [NSString stringWithContentsOfFile

【腾讯Bugly干货分享】JSPatch 成长之路

我们两清 提交于 2020-04-14 12:59:55
【推荐阅读】微服务还能火多久?>>> 本文来自于 腾讯bugly开发者社区 ,非经作者同意,请勿转载,原文地址: http://dev.qq.com/topic/579efa7083355a9a57a1ac5b Dev Club 是一个交流移动开发技术,结交朋友,扩展人脉的社群,成员都是经过审核的移动开发工程师。每周都会举行嘉宾分享,话题讨论等活动。 本期,我们邀请了腾讯WXG iOS开发工程师—— bang 陈振焯 ,为大家分享**《JSPatch成长之路》**。 如何加入 Dev Club? 移动端开发经验 >= 2 年,微信扫描下方群管理微信二维码,备注姓名-公司(或产品) 申请加入。 分享内容简介: JSPatch 是 iOS 上的动态更新框架,只需要引入小小的引擎文件,就可以用 JS 调用和替换任意 OC 方法。目前被普遍用于实时修复 bug,已有超过2500个 APP 接入,本次分享介绍 JSPatch 发展过程中遇到的问题和解决思路。 (此内容已在 GMTC 线下分享过,本次重新整理为线上分享) 内容大体框架: 起步:介绍 JSPatch 的诞生和当时碰到的难题 发展:介绍 JSPatch 如何补全周边功能变得更好用 下一步:介绍 JSPatch 下一步的计划 分享人介绍: bang 陈振焯 广州研发部 目前负责开发微信读书iOS端,博客 http://blog

iOS热更新实现方式

☆樱花仙子☆ 提交于 2020-03-30 07:19:13
heart.jpg 苹果静止热更新,可惜我的是企业app,没有这些约束了,随便用。(当然有些热更新已经可以通过苹果审核了,比如JSPatch)官网说的: JSPatch 平台 SDK 1.7.2 以上版本可以通过苹果审核,可以正常使用。Github 开源版本暂不可用。 最近公司要添加热修复BUG,其实早之前本人就有简单实现过,刚好契合公司需求,在此总结一下iOS热更新实现方式 这个是我根据JSPatch写的一个Demo: https://github.com/tikeyc/TJSPatchDemo 这是 Android热更新实现方式 一、JSPatch http://www.jspatch.com/ https://github.com/bang590/JSPatch 热更新时,从服务器拉去js脚本。理论上可以修改和新建所有的模块,但是不建议这样做。 建议用来做紧急的小需求和 修复严重的线上bug。 官网说: JSPatch 平台 SDK 1.7.2 以上版本可以通过苹果审核,可以正常使用。Github 开源版本暂不可用 二、lua脚本 比如:wax。热更新时,从服务器拉去lua脚本,游戏开发经常用到。 三、Weex http://weex.apache.org/cn/ https://github.com/apache/incubator-weex/ https://github

移动端APP热更新方案(iOS+Android)

我与影子孤独终老i 提交于 2020-03-30 07:17:53
出自:http://www.cnblogs.com/Creator/p/7007694.html 为什么要做热更新 当一个App发布之后,突然发现了一个严重bug需要进行紧急修复,这时候公司各方就会忙得焦头烂额:重新打包App、测试、向各个应用市场和渠道换包、提示用户升级、用户下载、覆盖安装。 重点是还会有原来的版本遗留,无论你怎么提示都有人放弃治疗,不愿意升级,强制不能使用体验又足够糟糕到让人不能启齿。 如果这是一个影响公司收入或者体验影响极其不好的Bug,那完蛋了,可能公司老板会对整个技术团队的技术能力丧失信心,其对技术人员的伤害是致命的。 最后最致命的是: 有时候仅仅是因为不小心写错了一行代码,就让所有的加班都付之东流,苦不苦,冤不冤,想想都苦。 还有一种剧情是研发总监把锅甩给测试团队,测试不过关,测试摊摊手说我也不是神啊,总会有漏网之鱼. 那能不能神不知鬼不觉再没有产生较大影响前把bug快速修复了呢? 热更新的行业情况 先来说说Android 并不是因为Android更有料就先说他,而是它的用户量级比Iphone大,我们写文章也是讲究大数据分析的不是.. Andoid端在15年热补丁就比较火,先后出现了Dexposed、AndFix,Qzone超级补丁的类Nuwa方式,微信的Tinker, 大众点评的nuwa、百度金融的rocooFix,

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

久未见 提交于 2020-02-29 15:42:05
简介 项目主页: https://github.com/bang590/JSPatch 示例下载: https://github.com/ios122/ios122 JSPatch 可以让你用 JavaScript 书写原生 iOS APP。只需在项目引入极小的引擎,就可以使用 JavaScript 调用任何 Objective-C 的原生接口,获得脚本语言的优势:为项目动态添加模块,或替换项目原生代码动态修复 bug。 优势 在项目中引入JSPatch,就可以在发现bug时下发JS脚本替换原生方法,可以做到无需更新整个APP即时修复bug! JSPatch用iOS内置的 JavaScriptCore.framework作为引擎;JSPatch也符合苹果的规则。苹果不允许动态下发可执行代码,但通过苹果 JavaScriptCore.framework 或 WebKit 执行的代码除外,JS 正是通过 JavaScriptCore.framework 执行的。 JSPatch非常小巧 实例预览 @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

如何实现iOS热更新

雨燕双飞 提交于 2019-12-07 10:03:57
如何实现iOS热更新 字数803 阅读7169 评论19 喜欢42 最近被苹果审核整怕了,每次提交版本都得等待一周到两周的审核时间,我是受不了这种速度了,于是决定研究有没有其他的方法跳过提交版本这个步骤,同样能够修复bug呢,于是我找到了JSPatch,也许也有很多人觉得这是个很高大上的技术,其实不然,我们只需要在项目里引入极小的引擎文件,就可以使用 JavaScript 调用任何 Objective-C 的原生接口,替换任意 Objective-C 原生方法。当然呢,目前主要用于下发 JS 脚本替换原生 Objective-C 代码,实时修复线上 bug。 JSPatch的代码大家可以去 github 上面下载 首先说一下JsPatch实现的内部原理:JsPatch能做到通过JS调用和改写OC方法最根本的原因是 Objective-C 是动态语言,OC上所有方法的调用/类的生成都通过 Objective-C Runtime 在运行时进行,我们可以通过类名和方法名反射得到相应的类和方法,也可以替换某个类的方法为新的实现,还可以新注册一个类,为类添加方法。这里就不详细介绍runtime了,相关的资料我会在后续的博客里介绍,大家再等等吧。所以 JSPatch 的原理就是:JS传递字符串给OC,OC通过 Runtime 接口调用和替换OC方法。这个很容易理解,JS的作用只是一个信使的作用

JSPatch – 动态更新iOS APP

天大地大妈咪最大 提交于 2019-12-07 01:57:01
使用JSPatch可以解决这样的问题,只需在项目中引入JSPatch,就可以在发现bug时下发JS脚本补丁,替换原生方法,无需更新APP即时修复bug。 @implementation JPTableViewController ... - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { NSString *content = self.dataSource[[indexPath row]]; //可能会超出数组范围导致crash JPViewController *ctrl = [[JPViewController alloc] initWithContent:content]; [self.navigationController pushViewController:ctrl]; } ... @end 上述代码中取数组元素处可能会超出数组范围导致crash。如果在项目里引用了JSPatch,就可以下发JS脚本修复这个bug: #import “JPEngine.m" @implementation AppDelegate - (BOOL)application:(UIApplication *)application

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

狂风中的少年 提交于 2019-12-06 11:18:20
iOS中动态更新补丁策略JSPatch运用基础二 一、引言 上篇博客中介绍了iOS开发中JSPatch引擎进行动态热修复的一些基础功能,其中包括向Objective-C类中添加类方法与成员方法、添加临时成员变量,使用JavaScript调用原生的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,CGSize,CGRect,NSRange。并且这几种结构体在进行界面操作时也会经常使用到。 对于CGRect类型,JavaScript使用如下代码创建: var view = require('UIView').alloc().init() view.setFrame({x:100,y:100,width:100,height

iOS 启动连续闪退保护方案

谁都会走 提交于 2019-12-03 11:26:23
版权声明:本文由刘笑江原创文章,转载请注明出处: 文章原文链接: https://www.qcloud.com/community/article/79 来源:腾云阁 https://www.qcloud.com/community 一.引言 “如果某个实体表现出以下任何一种特性,它就具备自主性:自我修复、自我保护、自我维护、对目标的自我控制、自我改进。” —— 凯文·凯利 iOS App 有时可能遇到启动必 crash 的绝境:每次打开 App 都闪退,无法正常使用App。 为了尝试解决这个问题,微信读书开发了 iOS 连续闪退保护工具:GYBootingProtection,检测连续闪退,在连续闪退出现时,尝试自修复 App: 本文探讨了连续闪退问题的产生原因、检测、修复机制,以及如何在你的项目中引入、测试和使用 GYBootingProtection 。 二.连续闪退检测 首先要检测用户 App 出现了连续闪退的情况,有两种检测方法,捕获异常和计时器。 1.捕获异常 检测连续闪退,可以通过捕获异常来实现,异常有以下种类: Mach 异常:EXC_CRASH UNIX 信号:SIGABRT NSException 异常:应用层,通过 NSUncaughtExceptionHandler 捕获 在念茜的 漫谈 iOS Crash 收集框架一文中详细介绍了 Mach 异常和

fir.im Weekly

倾然丶 夕夏残阳落幕 提交于 2019-11-30 18:04:22
好的工具&资源,会带来更多的灵感。本期 fir.im Weekly 精选了一些实用的 iOS,Android 的使用工具和源码分享,还有前端、UI方面的干货。一起来看下:) ##Swift 开源项目精选 由 @SwiftLanguage 分享。 “基于《Swift 语言指南》开源项目收录,做了一个甄别、筛选,并辅以一句话介绍。来源 GitHub: ”Github 的 Swift 库已尽收眼底,简洁明了,还在不断更新中。正在学习 Swift 的同学不要错过-->> Swift 开源项目精选 . ##xcbuild - Facebook 出品的开源 App 构建工具 xcbuild 是 Facebook 出品的开源 App 构建工具,能够为 App 构建过程与多平台运行提供更快构建、更好文档并兼容Xcode。Github 地址--> https://github.com/facebook/xcbuild . ##Swift 烧脑体操 @唐巧_boy 出了一系列的【Swift 烧脑体操】的文章,文如题目,涨姿势必备,文章列表如下: Swift 烧脑体操(一) - Optional 的嵌套 Swift 烧脑体操(二) - 函数的参数 Swift 烧脑体操(三) - 高阶函数 Swift 烧脑体操(四) - map 和 flatMap ##GitHub Top 100的Android