为什么谷歌、苹果会禁止热更新,而国内却很普遍? 热更新功能的存在。使得 App 绕过应用商店的审核更新代码、修复漏洞成为可能,给企业带来方便,但是,也保不齐一些不良 App “挂羊头卖狗肉”,等用户下载、安装 App 之后,热更新出其他不良功能。
1
vcgo 2019-03-31 01:00:29 +08:00 via Android
国内的安卓生态不一样
|
2
Ley 2019-03-31 01:01:22 +08:00 via Android 15
因为热更新虽然增加用户安全风险但能为开发商带来便利,国内缺乏监管,用户安全意识也缺乏,还有其他一些客观原因,最终导致国内用户不得不接受这样的环境。
|
3
yingqi7 2019-03-31 01:07:05 +08:00 via Android
国内大环境如此没得办法啊
|
4
hhhsuan 2019-03-31 01:27:44 +08:00 via Android
因为国内手机用户不喜欢升级应用
|
5
nanaw 2019-03-31 01:29:55 +08:00 via Android 15
当然要禁。热更新让审核变得没有意义。相当于偷偷往坑里填💩
但国内没审核啊,💩都可以光明正大的放,禁不禁还有什么意义吗。。 你家大门都没锁的也就没必要装防盗窗了吧。。 |
6
maemolee 2019-03-31 07:09:23 +08:00 2
因为之前 iOS 上有个 APP,看起来是个金融类(或者别的什么忘记了)的,下载下来之后,自动变成苹果助手(盗版商店)。
|
7
mozutaba 2019-03-31 08:15:00 +08:00 1
我以前的经历,国外提交 1 个包,国内出其他 20 个包。
蹭热点的新活动上线就扯蛋了,本来就 1,2 天,不去扯皮就一直等审核。 热更新多好。 |
8
aroundme 2019-03-31 08:44:25 +08:00 via Android
KPI
|
9
tyrealgray 2019-03-31 08:52:30 +08:00 via Android
热更新没有被禁止,禁止的是一些有漏洞的框架。
Codepush 了解一下,国外活得好好的 |
10
elfive 2019-03-31 10:32:19 +08:00 via iPhone
强制你们写代码要规范,测 bug 要测完整全面。
以上是开玩笑的😝 禁止热更新其实主要是因为逃避 App 审核,导致很多不可控的因素,所以才会被禁止的。 |
11
mooncakejs 2019-03-31 16:14:02 +08:00
说的冠名堂皇,本质上还是关起门来好收钱。
|
12
SmalL123 OP @tyrealgray 那为什么国内经常出现苹果因热更新下架某 App 的新闻,这里的热更新和你说的有什么区别吗?
|
13
SmalL123 OP @mooncakejs 感觉也有这种因素。
|
18
nanaw 2019-03-31 16:51:55 +08:00 via Android
@SmalL123 我说了啊,热更新相当于在审核旁边开小门,国内没审核,相当于大门没看门的随便进,当然你开不开小门就随便你了
|
20
yukiww233 2019-03-31 17:10:26 +08:00
你正文里不也说清楚原因了么
|
21
3s6i2o 2019-03-31 17:10:57 +08:00 via Android
国内没审核,某宝在 play 上被下架过几次后老实多了
|
23
yukiww233 2019-03-31 17:17:36 +08:00
@SmalL123 #22 一棒子打死的话一大票手游怎么办,国外的大公司照样也做热更新,何况还有 ReactNative
play store 完全不管,apple 也睁只眼闭只眼 |
24
nanaw 2019-03-31 17:17:56 +08:00 via Android 1
@SmalL123 这两种审核是一回事?
国外审核确保你应用没有流氓行为,滥用权限,病毒木马,窃取信息等等 国内则是你应用内容是否 hexie,不 fandong,非病毒(木马却可以)。并且很多(各大商店)渠道上架还要集成他们的 SDK (注入他们的木马)。从供应链污染,搞成全员流氓 你看看淘宝这种不同渠道的 apk 区别就知道了 |
25
strpbrk 2019-03-31 17:18:11 +08:00
很多事情都可以通过大清国情解释
|
27
Quaintjade 2019-03-31 17:21:53 +08:00
@3s6i2o
感觉还是没老实。Play 上的某宝在系统自带设置里无法强行停止,不知道搞了什么鬼。 |
28
nanaw 2019-03-31 17:22:02 +08:00 via Android
另外禁止的是替换可执行文件,如果是素材,资源文件,甚至是极其有限的特定范围内的代码应该也是可以的。
|
29
abcbuzhiming 2019-03-31 17:37:34 +08:00
热更新的本质就是给开发商绕过审核的机会,达到不需要用户认可就可以随便往用户的机器上塞私货的目的。所以热更新是个没前途的技术(除非你打算一辈子混灰产行业),国内目前处于野蛮生长时期罢了,类似的事情在 PC 上发生过,当时的 3721,现在 360,靠这个起家,但是现在你看还有几个这么干?你敢这么干那叫病毒木马,狗屁热更新
@SmalL123 国内哪里开放? IOS 国内允许热更新了吗?安卓是干脆就没有统一的商店,所以就没人管了,但是迟早会管的,热更新这个东西可以随意塞私货的途径,对那些贪婪的资本诱惑极大。你听他们说热更新是用来快速修复 bug ?你真以为资本会只用它来快速修复 bug 吗?所以迟早有一天这技术在手机平台上也会销声匿迹,彻底变成见不得光的灰产 |
31
SmalL123 OP @nanaw 你的意思是说,苹果或谷歌禁止热更新可执行文件,对于素材、资源文件等还是允许的。这个是可以区分开的吗?苹果或谷歌怎么会知道你用热更新更新了什么呢?
|
32
SmalL123 OP @abcbuzhiming 《安卓绿色联盟应用体验标准 2.0 》中的安全标准指出,应用不能通过热补丁,引入恶意行为和不符合本标准的行为。这意思可以理解为,只要不这么做,热补丁(和热更新一样吗?)技术是允许的。
|
33
SmalL123 OP @abcbuzhiming 《安卓绿色联盟应用体验标准 2.0 》中的安全标准指出,应用不能通过热补丁,引入恶意行为和不符合本标准的行为。这意思可以理解为,只要不这么做,热补丁(和热更新一样吗?)技术是允许的。这条标准的宽严度和苹果、谷歌相比怎么样啊?
|
34
caola 2019-03-31 18:14:00 +08:00
比如:热门的游戏有哪一款不是热更的?
|
36
tyrealgray 2019-03-31 18:59:25 +08:00 via Android
更新 jsbundle 形式的热更新是可以的,禁止的是改动编译过后的代码。
苹果谷歌一直允许热更新 jsbundle,现在的多数 app 都是混合型的 |
37
FLADIMIR 2019-03-31 19:07:30 +08:00 via Android
热更新不需要商店审核就过了,存在安全隐患,国外会涉及法律问题,万一被告,钱就没了、国内没人管
|
38
cllvking 2019-03-31 19:11:40 +08:00
感觉热更新对用户很不友好
|
40
AlisaDestiny 2019-03-31 19:50:44 +08:00
avoid censorship.
|
41
vcgo 2019-03-31 19:52:28 +08:00
@SmalL123 国外安卓的应用基本上都在 Google Play 上架,苹果的应用商店就一个。找几个国外有 App 下载页面的网站,基本上提供的都是 Google Play 和 App Store 的下载链接,很少有提供 APK 文件下载的。
|
42
2397613259qqq 2019-03-31 20:01:06 +08:00
游戏不都有热更新么,像那些游戏数据还有活动之类的,要改动客户端的时候才会从商店更新
|
43
SmalL123 OP @tyrealgray 你说的是苹果允许 jsbundle,是 React-Native 热更新方式吗?为什么会允许这种方式,而禁止 JSPatch 热更新方式,因为 JSPatch 热更新被爆出过存在安全漏洞?
|
44
SmalL123 OP @2397613259qqq 是的。有人说热更新禁止更新可执行文件,素材、资源文件可以更新,想必游戏更新应该属于这种吧?可苹果、谷歌是怎么知道更新的是这些内容啊?
|
46
SmalL123 OP @sunocean 目前,我所了解的到内容是热更新机制有很多是实现方式,比如 React Native 框架热更新、JSPatch、RolloutIO、TriggerIO、WAX(Lua) 等都不能用。
其中,苹果没有封禁 React Native 框架热更新,其他貌似都禁止。至于原因,有人说 JSPatch 存在漏洞。 请问允许 React Native 框架热更新的原因是什么? 也有人说,国外很多公司的 App 都有热更新机制,苹果其实也是睁一只眼闭一只眼。但这是另一个层面的问题。 并且,国内新闻经常报道苹果、谷歌因热更新而下架 App,但是,从来没有听说过国内因这个原因而下架 App。《安卓绿色联盟应用体验标准 2.0 》中的安全标准指出,应用不能通过热补丁,引入恶意行为和不符合本标准的行为。这也表明,只要不这么做,热补丁(和热更新一样吗?)技术是允许的。 有人说,国内允许热更新存在的原因是没有统一的安卓商店,或者有其他原因等。 |
47
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 |
48
Myprincess 2019-03-31 22:05:08 +08:00
所以 WP 会挂,都是冷更新.无利
|
49
SmalL123 OP @sunocean 能这样理解吗?
游戏所采用的热更新机制,就像你说的,它能调用的 Api 是确定的且有限的,对于苹果来说是可掌控的,而其他热更新方法,不确定会调用哪些 Api,且无法确定是本地调用还是热更新调用,这样苹果会失去控制,所以不如禁止。 谷歌是不是之前在热更新使用方面,比苹果还严格? 你觉得,国内为什么没有禁止热修复功能? |
50
fuckallmm 2020-01-15 17:04:31 +08:00
银角大王将宝葫芦倒置,喊了一声:“周鸿祎。” 周鸿祎应了一声,嗖地便被吸了进去。银角大王查看时,里面除了周鸿祎,还有 360 杀毒、360 压缩、360 浏览器、360 安全卫士、360 游戏大厅等熙熙攘攘一干人。银角大王惊讶道:“怎的来了这许多。” 宝葫芦开口言道:“我就只点了个‘下一步’。”
|