V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
SmalL123
V2EX  ›  问与答

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

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

    为什么谷歌、苹果会禁止热更新,而国内却很普遍? 热更新功能的存在。使得 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   ·   实用小工具   ·   2818 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 00:37 · PVG 08:37 · LAX 16:37 · JFK 19:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.