苹果发通谍拒绝“热更新”,中国程序猿“最受伤”

近日,苹果向所有开发者推送警告邮件,宣布未来将禁用 APP 内部的“动态分发”功能。并要求开发者在自家 APP 中删除 JSPatch 相关框架,否则 APP 将面临下架或禁止上架。

截止发稿,已有部分开发者新递交的APP受此影响被苹果审核部门拒绝。

这一动作,宣告着 APP Store 为“热更新”判了“死刑”,未来应用更新则将进入“原生”时代,用户需重新下载完整的新版数据包。

什么是“热更新”?

抛开复杂的技术语言,就是利用软件内的框架协议,允许软件从网络下载并运行调用可执行代码,对软件进行修改。

举个例子,就是大家平时打开《阴阳师》或者《王者荣耀》时,弹出的下载更新页面。▼▼▼

如果热更新被禁用,对于玩手游的上班族来说,不得不面临这样的情况:

在工作岗位上兢兢业业了一天,终于可以在公交地铁上玩上两把;

突然发现游戏有更新,需要下载完整的软件安装包;

然而由于 APP Store 的限制,大于100M的安装包只能在连接WiFi时下载;

满脸遗憾的你默默将程序关闭,叹了一声:还是算了吧,回家还得做饭看孩子呢。

然而更崩溃的,莫过于中国的“程序猿”们。

这次被禁的 JSPatch / wax/ rollout 热修复框架,由于代码命令简单,程序员的学习成本低,使用频次高,成为了许多国内iOS开发者非常热衷使用的一个框架。使用 JSPatch 的APP中,有很多是我们耳熟能详的▼▼▼

目前国内的开发环境,把不得自家APP早日上线盈利,难免会遇到一些bug或者一些产品经理“突发奇想”出来的需求。

如果使用“原生应用”重新打包,就面临着苹果平台的“二次审核”,即使这两年苹果加快了审核速度,但1-2天的审核周期(之前大约要7天),对于恨不得“周更”的国内APP来说,确实过于漫长。

由于“热修复”直接可以通过服务器推送并进行下载迭代,可以避过苹果“二次审核”,于是就成为了国内开发者们最爱用的一个框架。

可惜苹果一声令下,这些国内iOS开发者们,都要面临“回炉重造”,以适应新的审核制度。

为什么外国的开发者表示影响不大呢?

因为国外开发流程很好很规范,会做好充分的 codereview 和测试,上线后bug较少,往往很少需要进行热修复。频繁的更新迭代,不符合歪果仁眼中的“稳稳的幸福”。

当然,更重要的是歪果仁最常使用的 Google Play 也不允许使用“热修复”框架,支付宝、美团等应用都被举报然后直接下架过。

为什么苹果和谷歌禁用“热更新”的态度如此强硬,它究竟犯了什么错?

说到底,还是因为“热更新”从根本上破坏了官方应用分发平台“可控”与“安全”的底线。

在苹果的“开发者条例”中,明确规定了“所有执行代码都需要包含在App中,禁止下载代码到本地执行”。

显然JSPatch框架代码违反了这条规定。借助于这项技术,开发者可以避过官方应用商店的二次审核,许多国内开发者为了赶上架时间,钻了苹果审核的漏洞。

由于代码会在应用审核后改变功能,国内一些涉嫌违规的应用,往往是靠审核时关闭违规功能,审核后通过“热更新”代码来打开违规功能蒙混过关。

试想一下,本来你下的是一个消消乐的游戏,然而“热更新”后开屏给你推荐一些光屁股小姐姐的网站,俨然变成了个涉黄涉暴应用。

另一方面,JSPatch由于代码简单易上手,不仅方便了开发者,也方便了那些别有用心不法分子。

小编相信绝大开发者使用热更新只是为了“图方便”,不会添加恶意代码(最多暗改下极品爆率),但如果开发者没有做好热更新过程中传输的加密与校验,就很容易遭到第三方的“中间人”攻击。

早在2016年初,国际网络安全公司FireEyes就曾指出苹果APP Store内千余款应用使用JSPatch框架、存在严重的安全漏洞。▼▼▼

每当人们提到苹果APP Store,常以“封闭”“审核严格”著称,然而“热更新”无疑相当于为开发者和不法分子,在应用商店的层层审查中开了个“后门”。

破坏了苹果引以为傲的“可控性”与“安全性”,钻空子的开发者多了,苹果必然重拳出击,打击“热更新”框架。

国外应用商店禁用“热更新”,但国内的应用市场可就没有这么幸运了。

由于国内应用市场多基于安卓的开源应用生态,任何开发者都可以轻易地将安卓应用的.apk文件重新打包封装。不少应用市场为了引流,常常在软件内部植入恶意代码,用来劫持导航站、电商网站、广告联盟等各种流量,并伪装成联盟流量骗取百度分成收入。然后通过篡改软件版本号引导用户更新,形成国内安卓系统特有的“更了又更”的情况。

而有些开法者,则将多个软件打包成为一个应用,审查时,以其中合法的一个应用报审,而其他不合规的应用就借此暗渡陈仓了。

这也就解释了为什么往往国内第三方安卓应用商店下载来的应用,广告总是比其他的多,抑或是点开一个安装包,却装上了一个全家桶。

就更不要提有些开发者篡改浏览器参数,进行流量劫持,例如你在官网下载某个APP,但最终浏览器却给你下载了某度、某米、某讯的商城版本。

原生安装包况且如此,就更难想象如果开发者可以随时操纵APP下载执行程序,对系统安全留下的更多隐患了。

作为软件平台的管理者,不应该因为软件捆绑的应用与广告的“利益”蒙蔽了双眼。毕竟就像银行取钱,麻烦点用户依然会一边抱怨一边取钱,但如果真的因为账号安全蒙受损失,那么谁也不敢再来贵平台存钱了。

本文来自开源中国社区 [http://www.oschina.net]

时间: 2024-09-17 08:36:20

苹果发通谍拒绝“热更新”,中国程序猿“最受伤”的相关文章

苹果下架4万App ?安全专家:暂无黑客利用“热更新”发起对 iOS App 攻击的实例

  自 6 月 7 日苹果 App Store 审核团队近日向厂商发出"最后通牒",要求开发者在 6 月 12 日之前去除软件热更新功能,不然有可能下架后,今日(6 月 22 日),有媒体报道,一周内苹果 App Store 下架了近 4 万款中国 App .一种流行观点认为,苹果不是说着玩,而是真对热更新动刀子了. 热更新是一种各大手游等众多 App 常用的更新方式,即用户通过 App Store下载App之后,打开 App 时遇到的即时更新. 2017年6月,AppStore 审核

是什么逼得苹果对开发者们下"热更新"的最后通牒

苹果用一封邮件对"热更新"下达了最后的通牒,也让iOS开发者们度过了坐立不安的一天. "热更新"也就是动态下发代码,它可以使开发者在不发布版本的情况下,修复BUG和发布功能.这让开发者绕开了苹果的审核机制,避免长时间的审核等待以及多次被拒造成的成本开销. 但现在,苹果正在对"热更新"实行更严厉的审查.昨天,不少开发者收到了来自苹果的邮件.苹果在邮件中表示,将不再允许使用动态下发代码的机制.苹果要求被警告的开发者在下个版本中去除能动态改变应用行为和

苹果再次重申全面禁止热更新,不移除相关代码就下架

苹果在今年 3 月份的时候就曾向所有开发者推送警告邮件,宣布未来将禁用 APP 内部的"动态分发"功能.并要求开发者在自家 APP 中删除 JSPatch 相关框架,否则 APP 将面临下架或禁止上架. 6 月 1 日,苹果再次重申:要求当前含有热更新功能的 App,在 6 月 12 日前移除相关代码,否则这些 App 可能会下架. 由于软件热更新绕过了苹果的审核,黑客开发者有可能会通过提交正常的版本之后,通过热更新的方式修改 APP 导致安全隐患,这违反了苹果的安全隐私政策.另外苹果

ios实现热更新(无需发新版本实现app添加新功能)

目前能够实现热更新的方法,总结起来有以下三种 1. 使用FaceBook 的开源框架 reactive native,使用js写原生的ios应用 ios app可以在运行时从服务器拉取最新的js文件到本地,然后执行,因为js是一门动态的 脚本语言,所以可以在运行时直接读取js文件执行,也因此能够实现ios的热更新   2. 使用lua 脚本.lua脚本如同js 一样,也能在动态时被.之前愤怒的小鸟使用 lua脚本做的一个插件 wax,可以实现使用lua写ios应用.热更新时,从服务器拉去lua脚

微软发招,苹果发飙,React Native 躺枪

这两天苹果和微软互怼,用脚本热更新的朋友要谨慎过iOS审核. 早上有Q群里面在讨论最近用JavaScript做为脚本层,在苹果商店审核遭拒的情况. 从目前多数信息来看,cocos2d-js和creator这样用SpiderMonkey + JSB技术栈的游戏情况尚好,但是用facebook React-Native技术的无一例外躺枪了.用jspatch开源库的也很多兄弟阵亡. 就在今天早上,Facebook的React-Native github仓库里有这么一条issue:https://git

React Native热更新及混合开发

随着 React Native 的不断发展完善,越来越多的公司选择使用 React Native 替代 iOS/Android 进行部分业务线的开发,也有不少使用 Hybrid 技术的公司转向了 React Native .虽然React Native在目前来说仍有不少的坑,不过对于以应用开发为主的App来说完全可以胜任. 概述 在iOS应用开发中,由于Apple严格的审核标准和低效率,iOS应用的发版速度极慢,这对于大多数团队来说是不能接受的,所以热更新对于iOS应用来说就显得尤其重要.而就在

iOS第三方类库JSPatch(热更新)

---------------------------------------------------------------------------------------------------------------------------- 更新记录 2016年3月4日 JSPatch官方网址:http://jspatch.com/ OC转JS代码工具:http://bang590.github.io/JSPatchConvertor/ -------------------------

美团 Android 热更新方案 Robust 开源,包含自动化补丁工具

美团 Android 热更新方案 Robust 开源了. Robust 是新一代热更新系统,对 Android 版本无差别兼容,无需发版就可以做到随时修改线上 bug,快速对重大线上问题作出反应.Robust 热更新系统借鉴 Instant Run 原理,实现了一个兼容性更强而且实时生效的热更新方案.其基本思路是,Robust 热更新系统在一个方法的入口处插入一段跳转代码,当发现某个方法出现 bug 就跳转执行补丁中的代码,略过原有代码的执行,否则执行原有方法体逻辑. 优势 支持 Android

Libgdx实现跨平台热更新

游戏开发中实现热更新可以实现无须重新打包,无须发布市场,无须等待审核,只需要将更新包放到服务器上,客户端就可以直接下载更新包来实现游戏的更新,在游戏后期的维护过程中,能为开发者提供十分的便利,正所谓工欲善其事,必先利其器.这篇文章就来说说如何在Libgdx中实现游戏的热更新. 原理 要实现游戏的热更新,首先必须对编译原理有一定的了解,不用掌握技术细节,但是基本流程是必须知道的.我们知道Libgdx的开发语言是Java,Java是一种静态语言,必须先编译成字节码才能在虚拟机中执行.我们正常开发的J