V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zhe13
V2EX  ›  分享发现

代码热推送是个什么鬼?

  •  
  •   zhe13 · 2016-01-12 10:14:01 +08:00 · 5267 次点击
    这是一个创建于 3028 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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


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