为什么谷歌、苹果会禁止热更新,而国内却比较普遍? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
SmalL123
V2EX    问与答

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

  •  
  •   SmalL123 2019-03-31 00:47:47 +08:00 15317 次点击
    这是一个创建于 2398 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    50 条回复    2020-01-15 17:04:31 +08:00
    vcgo
        1
    vcgo  
       2019-03-31 01:00:29 +08:00 via Android
    国内的安卓生态不一样
    Ley
        2
    Ley  
       2019-03-31 01:01:22 +08:00 via Android   15
    因为热更新虽然增加用户安全风险但能为开发商带来便利,国内缺乏监管,用户安全意识也缺乏,还有其他一些客观原因,最终导致国内用户不得不接受这样的环境。
    yingqi7
        3
    yingqi7  
       2019-03-31 01:07:05 +08:00 via Android
    国内大环境如此没得办法啊
    hhhsuan
        4
    hhhsuan  
       2019-03-31 01:27:44 +08:00 via Android
    因为国内手机用户不喜欢升级应用
    nanaw
        5
    nanaw  
       2019-03-31 01:29:55 +08:00 via Android   15
    当然要禁。热更新让审核变得没有意义。相当于偷偷往坑里填

    但国内没审核啊,都可以光明正大的放,禁不禁还有什么意义吗。。

    你家大门都没锁的也就没必要装防盗窗了吧。。
    maemolee
        6
    maemolee  
       2019-03-31 07:09:23 +08:00   2
    因为之前 iOS 上有个 APP,看起来是个金融类(或者别的什么忘记了)的,下载下来之后,自动变成苹果助手(盗版商店)。
    mozutaba
        7
    mozutaba  
       2019-03-31 08:15:00 +08:00   1
    我以前的经历,国外提交 1 个包,国内出其他 20 个包。
    蹭热点的新活动上线就扯蛋了,本来就 1,2 天,不去扯皮就一直等审核。
    热更新多好。
    aroundme
        8
    aroundme  
       2019-03-31 08:44:25 +08:00 via Android
    KPI
    tyrealgray
        9
    tyrealgray  
       2019-03-31 08:52:30 +08:00 via Android
    热更新没有被禁止,禁止的是一些有漏洞的框架。

    Codepush 了解一下,国外活得好好的
    elfive
        10
    elfive  
       2019-03-31 10:32:19 +08:00 via iPhone
    强制你们写代码要规范,测 bug 要测完整全面。

    以上是开玩笑的

    禁止热更新其实主要是因为逃避 App 审核,导致很多不可控的因素,所以才会被禁止的。
    mooncakejs
        11
    mooncakejs  
       2019-03-31 16:14:02 +08:00
    说的冠名堂皇,本质上还是关起门来好收钱。
    SmalL123
        12
    SmalL123  
    OP
       2019-03-31 16:28:05 +08:00
    @tyrealgray 那为什么国内经常出现苹果因热更新下架某 App 的新闻,这里的热更新和你说的有什么区别吗?
    SmalL123
        13
    SmalL123  
    OP
       2019-03-31 16:33:00 +08:00
    @mooncakejs 感觉也有这种因素。
    SmalL123
        14
    SmalL123  
    OP
       2019-03-31 16:45:27 +08:00
    @vcgo 意思是说国外的 App 只能在苹果商店和 google play 上架吗?
    SmalL123
        15
    SmalL123  
    OP
       2019-03-31 16:46:53 +08:00
    @Ley 那苹果和谷歌禁止热更新,是出于安全的考虑多呢还是出于垄断居多呢?
    SmalL123
        16
    SmalL123  
    OP
       2019-03-31 16:47:48 +08:00
    @hhhsuan 国外用户对升级接受度比国内高吗?
    SmalL123
        17
    SmalL123  
    OP
       2019-03-31 16:49:36 +08:00
    @nanaw 是什么原因导致国内开放热更新呢?
    nanaw
        18
    nanaw  
       2019-03-31 16:51:55 +08:00 via Android
    @SmalL123 我说了啊,热更新相当于在审核旁边开小门,国内没审核,相当于大门没看门的随便进,当然你开不开小门就随便你了
    SmalL123
        19
    SmalL123  
    OP
       2019-03-31 17:08:29 +08:00
    @nanaw 在国内的应用商店上架 App,也会经过安全审核的吧。你说的国内没审核是指对热更新功能没审核吗?
    yukiww233
        20
    yukiww233  
       2019-03-31 17:10:26 +08:00
    你正文里不也说清楚原因了么
    3s6i2o
        21
    3s6i2o  
       2019-03-31 17:10:57 +08:00 via Android
    国内没审核,某宝在 play 上被下架过几次后老实多了
    SmalL123
        22
    SmalL123  
    OP
       2019-03-31 17:14:24 +08:00
    @yukiww233 也有声音说评估并没有禁止所有的热更新功能,这个怎么理解啊?
    yukiww233
        23
    yukiww233  
       2019-03-31 17:17:36 +08:00
    @SmalL123 #22 一棒子打死的话一大票手游怎么办,国外的大公司照样也做热更新,何况还有 ReactNative
    play store 完全不管,apple 也睁只眼闭只眼
    nanaw
        24
    nanaw  
       2019-03-31 17:17:56 +08:00 via Android   1
    @SmalL123 这两种审核是一回事?
    国外审核确保你应用没有流氓行为,滥用权限,病毒木马,窃取信息等等
    国内则是你应用内容是否 hexie,不 fandong,非病毒(木马却可以)。并且很多(各大商店)渠道上架还要集成他们的 SDK (注入他们的木马)。从供应链污染,搞成全员流氓

    你看看淘宝这种不同渠道的 apk 区别就知道了
    strpbrk
        25
    strpbrk  
       2019-03-31 17:18:11 +08:00
    很多事情都可以通过大清国情解释
    nanaw
        26
    nanaw  
       2019-03-31 17:19:53 +08:00 via Android
    @nanaw 对了如果是大厂签名那就可以为所欲为不用任何审核
    Quaintjade
        27
    Quaintjade  
       2019-03-31 17:21:53 +08:00
    @3s6i2o
    感觉还是没老实。Play 上的某宝在系统自带设置里无法强行停止,不知道搞了什么鬼。
    nanaw
        28
    nanaw  
       2019-03-31 17:22:02 +08:00 via Android
    另外禁止的是替换可执行文件,如果是素材,资源文件,甚至是极其有限的特定范围内的代码应该也是可以的。
    abcbuzhiming     29
    abcbuzhiming  
       2019-03-31 17:37:34 +08:00
    热更新的本质就是给开发商绕过审核的机会,达到不需要用户认可就可以随便往用户的机器上塞私货的目的。所以热更新是个没前途的技术(除非你打算一辈子混灰产行业),国内目前处于野蛮生长时期罢了,类似的事情在 PC 上发生过,当时的 3721,现在 360,靠这个起家,但是现在你看还有几个这么干?你敢这么干那叫病毒木马,狗屁热更新
    @SmalL123 国内哪里开放? IOS 国内允许热更新了吗?安卓是干脆就没有统一的商店,所以就没人管了,但是迟早会管的,热更新这个东西可以随意塞私货的途径,对那些贪婪的资本诱惑极大。你听他们说热更新是用来快速修复 bug ?你真以为资本会只用它来快速修复 bug 吗?所以迟早有一天这技术在手机平台上也会销声匿迹,彻底变成见不得光的灰产
    SmalL123
        30
    SmalL123  
    OP
       2019-03-31 18:00:39 +08:00
    @nanaw 你说的某宝不同渠道的 apk 这种情况怎么看啊?我不是很懂技术。
    SmalL123
        31
    SmalL123  
    OP
       2019-03-31 18:06:54 +08:00
    @nanaw 你的意思是说,苹果或谷歌禁止热更新可执行文件,对于素材、资源文件等还是允许的。这个是可以区分开的吗?苹果或谷歌怎么会知道你用热更新更新了什么呢?
    SmalL123
        32
    SmalL123  
    OP
       2019-03-31 18:09:17 +08:00
    @abcbuzhiming 《安卓绿色联盟应用体验标准 2.0 》中的安全标准指出,应用不能通过热补丁,引入恶意行为和不符合本标准的行为。这意思可以理解为,只要不这么做,热补丁(和热更新一样吗?)技术是允许的。
    SmalL123
        33
    SmalL123  
    OP
       2019-03-31 18:10:10 +08:00
    @abcbuzhiming 《安卓绿色联盟应用体验标准 2.0 》中的安全标准指出,应用不能通过热补丁,引入恶意行为和不符合本标准的行为。这意思可以理解为,只要不这么做,热补丁(和热更新一样吗?)技术是允许的。这条标准的宽严度和苹果、谷歌相比怎么样啊?
    caola
        34
    caola  
       2019-03-31 18:14:00 +08:00
    比如:热门的游戏有哪一款不是热更的?
    SmalL123
        35
    SmalL123  
    OP
       2019-03-31 18:27:32 +08:00
    @caola 嗯,我也比较疑惑,为什么有个禁止,有的允许。所以想弄清楚怎么回事。
    tyrealgray
        36
    tyrealgray  
       2019-03-31 18:59:25 +08:00 via Android
    更新 jsbundle 形式的热更新是可以的,禁止的是改动编译过后的代码。

    苹果谷歌一直允许热更新 jsbundle,现在的多数 app 都是混合型的
    FLADIMIR
        37
    FLADIMIR  
       2019-03-31 19:07:30 +08:00 via Android
    热更新不需要商店审核就过了,存在安全隐患,国外会涉及法律问题,万一被告,钱就没了、国内没人管
    cllvking
        38
    cllvking  
       2019-03-31 19:11:40 +08:00
    感觉热更新对用户很不友好
    SmalL123
        39
    SmalL123  
    OP
       2019-03-31 19:44:32 +08:00
    @FLADIMIR 国外涉及什么法律啊?
    AlisaDestiny
        40
    AlisaDestiny  
       2019-03-31 19:50:44 +08:00
    avoid censorship.
    vcgo
        41
    vcgo  
       2019-03-31 19:52:28 +08:00
    @SmalL123 国外安卓的应用基本上都在 Google Play 上架,苹果的应用商店就一个。找几个国外有 App 下载页面的网站,基本上提供的都是 Google Play 和 App Store 的下载链接,很少有提供 APK 文件下载的。
    2397613259qqq
        42
    2397613259qqq  
       2019-03-31 20:01:06 +08:00
    游戏不都有热更新么,像那些游戏数据还有活动之类的,要改动客户端的时候才会从商店更新
    SmalL123
        43
    SmalL123  
    OP
       2019-03-31 20:02:58 +08:00
    @tyrealgray 你说的是苹果允许 jsbundle,是 React-Native 热更新方式吗?为什么会允许这种方式,而禁止 JSPatch 热更新方式,因为 JSPatch 热更新被爆出过存在安全漏洞?
    SmalL123
        44
    SmalL123  
    OP
       2019-03-31 20:05:41 +08:00
    @2397613259qqq 是的。有人说热更新禁止更新可执行文件,素材、资源文件可以更新,想必游戏更新应该属于这种吧?可苹果、谷歌是怎么知道更新的是这些内容啊?
    sunocean
        45
    sunocean  
       2019-03-31 20:07:26 +08:00
    @SmalL123 你的这几个问题, google 一下都有答案.
    SmalL123
        46
    SmalL123  
    OP
       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
        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
    Myprincess
        48
    Myprincess  
       2019-03-31 22:05:08 +08:00
    所以 WP 会挂,都是冷更新.无利
    SmalL123
        49
    SmalL123  
    OP
       2019-03-31 22:52:07 +08:00
    @sunocean 能这样理解吗?
    游戏所采用的热更新机制,就像你说的,它能调用的 Api 是确定的且有限的,对于苹果来说是可掌控的,而其他热更新方法,不确定会调用哪些 Api,且无法确定是本地调用还是热更新调用,这样苹果会失去控制,所以不如禁止。
    谷歌是不是之前在热更新使用方面,比苹果还严格?
    你觉得,国内为什么没有禁止热修复功能?
    fuckallmm
        50
    fuckallmm  
       2020-01-15 17:04:31 +08:00
    银角大王将宝葫芦倒置,喊了一声:“周鸿。” 周鸿应了一声,嗖地便被吸了进去。银角大王查看时,里面除了周鸿,还有 360 杀毒、360 压缩、360 浏览器、360 安全卫士、360 游戏大厅等熙熙攘攘一干人。银角大王惊讶道:“怎的来了这许多。” 宝葫芦开口言道:“我就只点了个‘下一步’。”
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3047 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 12:02 PVG 20:02 LAX 05:02 JFK 08:02
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86