V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
zhe13

代码热推送是个什么鬼?

  •  
  •   zhe13 · Jan 12, 2016 · 5954 views
    This topic created in 3758 days ago, the information mentioned may be changed or developed.

    看见 github 上微软又出了一个黑科技,CodePush.
    看介绍好象是可以不用向应用商店提交版本,直接推送代码。
    这是不是和许多 iOS 手机游戏一样,登录的时候下载更新包一样?
    这样做的原理是啥

    28 replies    2016-01-13 20:35:38 +08:00
    hyq
        1
    hyq  
       Jan 12, 2016
    用脚本写逻辑,发布后从网上下脚本。一般是用 lua 脚本
    hyq
        2
    hyq  
       Jan 12, 2016
    这个是 javascript 做的 natvie 应用吧?
    congeec
        3
    congeec  
       Jan 12, 2016 via iPad
    苹果的政策允许么?貌似是盲区
    zhe13
        4
    zhe13  
    OP
       Jan 12, 2016
    @congeec 以前实习的时候,前辈写 iOS 就是用 Ludei 打包的,他就写了一个类似于端游每次登录的时候检查一下是否有更新包,有就下载。好像之前很火的刀塔传奇就是这么做的?国内和日本的好多 iOS 游戏都是这么做的,毕竟苹果商店每次提交版本都要提交全部代码,我觉得这样也很好=-=。能跟我讲讲整个软件包重新下载和下载补丁的优劣吗?@hyq
    zhe13
        5
    zhe13  
    OP
       Jan 12, 2016
    @hyq 那我能不能这样理解,一个应用只包括底层逻辑和基础资源以及一个类似于“编译器”一样的处理器。高级逻辑就是脚本,然后每次打开程序都会由这个处理器接受推送,看看是否要下载新的脚本更改高级逻辑?
    pheyer
        6
    pheyer  
       Jan 12, 2016
    这个是配合 ReactNative 使用的吧
    GeekTest
        7
    GeekTest  
       Jan 12, 2016 via Android
    不就是 12306 用的那套么
    bullettrain1433
        8
    bullettrain1433  
       Jan 12, 2016
    居然是微软家搞得
    easing
        9
    easing  
       Jan 12, 2016
    我们的浏览器不就是代码热推送嘛, js 成吨成吨的下。概念就是这么个概念,无非就是换一个平台再来一次。
    yujie
        10
    yujie  
       Jan 12, 2016
    现在脚本更新还是没啥问题,苹果在这块其实也是睁一只眼闭一只眼的,牵扯到很多利益问题,你要是重新传个包上去又得重新审核,不能及时解决问题,程序开发到一定程度,脚本的逻辑也是很多的,其中只有小改动的话做增量更新就好了,所有脚本全部打包上传没必要,这个微软出的不太清楚,我们之前做游戏就是用 Lua 脚本热更的,脚本语言是在运行时才进行编译链接的,所以就有了更新的可能性,做好版本号,发现有新的了,就下载下来,重新加载就好了~这期间程序是可以不用重启的
    a591826944
        11
    a591826944  
       Jan 12, 2016
    ReactNative +1
    hqdmy
        12
    hqdmy  
       Jan 12, 2016
    hotpatch 啊
    hqdmy
        13
    hqdmy  
       Jan 12, 2016
    ios wax
    android Xposed
    agassi_yzh
        14
    agassi_yzh  
       Jan 12, 2016
    JSPatch 也能干
    plantain
        15
    plantain  
       Jan 12, 2016
    代码是 typescript 写的,所以实际运行的应该是编译后的 javascript 。现在只支持 Cordova 和 React Native
    aaaron7
        16
    aaaron7  
       Jan 12, 2016
    live long and prosper.....

    最后一条 instruction 太有情怀了……
    leonlu
        17
    leonlu  
       Jan 12, 2016
    code push 用到的代码是 javascript 。苹果原来在开发者协议里指定只能在 web view 中执行远端代码。但是后来他们修改了协议,添加了一个 JavaScriptCore 。也就是说在苹果这儿,这么干是被认可的。
    hyq
        18
    hyq  
       Jan 12, 2016
    @congeec 只要不是一个热更新包把整个程序全换掉,现在苹果是不管的。国内的游戏基本都有这样的热更新功能。


    @zhe13 重新下载软件包,坏处就是要审核,好慢好慢的。。补丁的坏处在于补丁多了以后,用户体验不好,进入一个程序,结果弹出个窗口要求下载 100+个更新包,合计 600M ,一般人都不能接受吧(这是极端情况,如果一直依靠补丁来更新程序,有可能出现)。
    zhe13
        19
    zhe13  
    OP
       Jan 12, 2016
    @GeekTest 来来来,我对 12306 很有兴趣,是不是能够详解一下
    zhe13
        20
    zhe13  
    OP
       Jan 12, 2016
    @leonlu 想不到你竟然把开发者协议全看了(真是够闲的
    zhe13
        21
    zhe13  
    OP
       Jan 12, 2016
    @hyq 啊,那热更新和提交版本审核同步进行不就好了(热跟新几个版本之后打包提交审核=-=
    hyq
        22
    hyq  
       Jan 12, 2016
    @zhe13 可以在热更新的时候提交审核,技术上一点问题都没有。整包小的时候看不到差别,如果是游戏,一个整包几百兆,热更新的优势还是很明显的
    zhe13
        23
    zhe13  
    OP
       Jan 12, 2016
    @yujie =-=还招人实习吗,我就来学习热更新
    jayzjj000
        24
    jayzjj000  
       Jan 12, 2016
    这个应该都不算是黑科技了把,只是好好利用起来的公司好像不是特别多
    单单 iOS 平台上,开源的 Wax+Lua , JSPatch+JS ,都是很好地方案,加上 iOS7 苹果推出了 JavascriptCore ,连平台都认可了还有啥不能干的
    zhe13
        25
    zhe13  
    OP
       Jan 13, 2016
    @jayzjj000 有什么奇怪的用途吗?如果我想玩一玩,用哪个比较好?
    jayzjj000
        26
    jayzjj000  
       Jan 13, 2016
    @zhe13 奇怪的用途就是线上改代码,你能想到改代码能产生的奇怪的功能他们都能搞
    这几个框架里面 JSPatch 应该算是比较成熟了吧,中文文档也更全面,可以玩一玩
    kevinzhwl
        27
    kevinzhwl  
       Jan 13, 2016 via Android
    很有趣的东西啊
    publicAdmin
        28
    publicAdmin  
       Jan 13, 2016
    JSPath 微信也在用.. 666666
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1222 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 86ms · UTC 23:30 · PVG 07:30 · LAX 16:30 · JFK 19:30
    ♥ Do have faith in what you're doing.