为什么谷歌、苹果会禁止热更新,而国内却比较普遍?

2019-03-31 00:47:47 +08:00
 SmalL123

为什么谷歌、苹果会禁止热更新,而国内却很普遍? 热更新功能的存在。使得 App 绕过应用商店的审核更新代码、修复漏洞成为可能,给企业带来方便,但是,也保不齐一些不良 App “挂羊头卖狗肉”,等用户下载、安装 App 之后,热更新出其他不良功能。

14661 次点击
所在节点    问与答
50 条回复
vcgo
2019-03-31 19:52:28 +08:00
@SmalL123 国外安卓的应用基本上都在 Google Play 上架,苹果的应用商店就一个。找几个国外有 App 下载页面的网站,基本上提供的都是 Google Play 和 App Store 的下载链接,很少有提供 APK 文件下载的。
2397613259qqq
2019-03-31 20:01:06 +08:00
游戏不都有热更新么,像那些游戏数据还有活动之类的,要改动客户端的时候才会从商店更新
SmalL123
2019-03-31 20:02:58 +08:00
@tyrealgray 你说的是苹果允许 jsbundle,是 React-Native 热更新方式吗?为什么会允许这种方式,而禁止 JSPatch 热更新方式,因为 JSPatch 热更新被爆出过存在安全漏洞?
SmalL123
2019-03-31 20:05:41 +08:00
@2397613259qqq 是的。有人说热更新禁止更新可执行文件,素材、资源文件可以更新,想必游戏更新应该属于这种吧?可苹果、谷歌是怎么知道更新的是这些内容啊?
sunocean
2019-03-31 20:07:26 +08:00
@SmalL123 你的这几个问题, google 一下都有答案.
SmalL123
2019-03-31 20:32:01 +08:00
@sunocean 目前,我所了解的到内容是热更新机制有很多是实现方式,比如 React Native 框架热更新、JSPatch、RolloutIO、TriggerIO、WAX(Lua) 等都不能用。
其中,苹果没有封禁 React Native 框架热更新,其他貌似都禁止。至于原因,有人说 JSPatch 存在漏洞。
请问允许 React Native 框架热更新的原因是什么?
也有人说,国外很多公司的 App 都有热更新机制,苹果其实也是睁一只眼闭一只眼。但这是另一个层面的问题。
并且,国内新闻经常报道苹果、谷歌因热更新而下架 App,但是,从来没有听说过国内因这个原因而下架 App。《安卓绿色联盟应用体验标准 2.0 》中的安全标准指出,应用不能通过热补丁,引入恶意行为和不符合本标准的行为。这也表明,只要不这么做,热补丁(和热更新一样吗?)技术是允许的。
有人说,国内允许热更新存在的原因是没有统一的安卓商店,或者有其他原因等。
sunocean
2019-03-31 21:16:58 +08:00
@SmalL123 我花时间帮你 Google 一下.
dlopen(), dlsym(), respondsToSelector:, performSelector:,method_exchangeImplementations() 等反射函数用于动态调用 oc API 通过远程下载的脚本使用这些函数达成改变 app 行为才会被当做违规行为,换句话说,就是如果本地使用(非远程下载)这些函数是允许的,要不 oc 也没必要提供这些函数,但在技术上我认为 apple 很难判别是本地使用,还是被远程更新的脚本调用;脚本更新是允许的,即 lua 并不使用上述反射函数,而使用确定的导出函数也是允许的;为什么呢?苹果给出的解释是担心中间人攻击,就是说,如果使用 jspatch 可以做到被中间人利用调用任意系统 API,而造成风险,而这些滥用很可能不是 app 开发者本身的意图;而一般游戏使用的 lua 更新方案是在确定的导出 API 里使用 lua 作为开发脚本,本身能够调用的功能是确定、有限的,而不是不确定、任意的系统 API,我认为这样做苹果是默认的;当然使用 lua 作为脚本,调用了上述 oc 反射方法的 framework、sdk 估计也会被警告,所以结论是不要调用上述反射 API。

作者:庞巍伟
链接: https://www.zhihu.com/question/56794578/answer/150440104
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
附上苹果邮件原文
https://github.com/facebook/react-native/issues/12778
Myprincess
2019-03-31 22:05:08 +08:00
所以 WP 会挂,都是冷更新.无利
SmalL123
2019-03-31 22:52:07 +08:00
@sunocean 能这样理解吗?
游戏所采用的热更新机制,就像你说的,它能调用的 Api 是确定的且有限的,对于苹果来说是可掌控的,而其他热更新方法,不确定会调用哪些 Api,且无法确定是本地调用还是热更新调用,这样苹果会失去控制,所以不如禁止。
谷歌是不是之前在热更新使用方面,比苹果还严格?
你觉得,国内为什么没有禁止热修复功能?
fuckallmm
2020-01-15 17:04:31 +08:00
银角大王将宝葫芦倒置,喊了一声:“周鸿祎。” 周鸿祎应了一声,嗖地便被吸了进去。银角大王查看时,里面除了周鸿祎,还有 360 杀毒、360 压缩、360 浏览器、360 安全卫士、360 游戏大厅等熙熙攘攘一干人。银角大王惊讶道:“怎的来了这许多。” 宝葫芦开口言道:“我就只点了个‘下一步’。”

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/550402

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX