各个 Android 应用市场的增量更新是如何做到的? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
tianlang1989
V2EX    Android

各个 Android 应用市场的增量更新是如何做到的?

  •  
  •   tianlang1989 2018-08-02 17:24:08 +08:00 13764 次点击
    这是一个创建于 2673 天前的主题,其中的信息可能已经有所发展或是发生改变。
    增量更新的基本原理可以概括为:
    服务器对比新包与旧包的差异,然后生成差分包。
    应用市场下载差分包,在本地与旧包生成新的安装包,然后安装。
    那么问题来了,
    本地安装后的应用的 apk 一般是在 /data/app/xxx 包名 /目录下的
    只要应用市场不是系统应用的话,它是没有权限获取到旧的 apk 包的
    那么新的安卓包是如何生成的呢?
    12 条回复    2018-08-10 19:35:18 +08:00
    yukiww233
        1
    yukiww233  
       2018-08-02 17:29:22 +08:00
    获取已安装的 apk 不需要任何权限
    tianlang1989
        2
    tianlang1989  
    OP
       2018-08-02 17:33:50 +08:00
    问题被秒破,附上结论:
    /data/app 文件夹需要系统权限
    但是 /data/app/下的子文件不需要,可以正常访问
    涨知识了,此贴终结
    Hypixel
        3
    Hypixel  
       2018-08-02 18:01:48 +08:00 via Android
    差分包与旧包生成的新 apk,签名怎么处理呢?
    pdog18
        4
    pdog18  
       2018-08-02 18:07:35 +08:00 via Android
    @Hypixel 二进制合并的,合并后和新包完全一样
    Hypixel
        5
    Hypixel  
       2018-08-02 18:08:10 +08:00 via Android
    @pdog18 原来如此,谢谢
    hatsuyuki
        6
    hatsuyuki  
       2018-08-02 18:10:39 +08:00
    @Hypixel 签名是不变的
    Tyanboot
        7
    Tyanboot  
    PRO
       2018-08-02 21:57:25 +08:00 via Android
    /data/app 里面是可以查看的。随便找个文件管理器就能看 /data/app 里面的 apk,不需要 root
    Lentin
        8
    Lentin  
       2018-08-02 22:12:07 +08:00 via iPhone
    apk 可以理解为就是个 zip 包,拆开重新组装而已
    gavin6liu
        10
    gavin6liu  
       2018-08-04 15:40:25 +08:00
    后端用 二进制文件算法 拆分,然后前端用 对应算法 合并就好了。

    具体用的算法常用的就 bsdiff & bspatch ,也有很多其他的很多,有的速度快但拆分包大 ... 看怎么选择。
    gavin6liu
        11
    gavin6liu  
       2018-08-04 15:42:36 +08:00
    前面有人说签名问题,因为是基于二进制的,打包出来新包数据是完全一样的,md5 hash 都是一样的。所以没有签名问题
    Trumeet
        12
    Trumeet  
       2018-08-10 19:35:18 +08:00 via Android
    @tianlang1989 甚至可以用 PM 直接获取 apk 路径..
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3130 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 11:31 PVG 19:31 LAX 03:31 JFK 06:31
    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