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

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

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

    具体用的算法常用的就 bsdiff & bspatch ,也有很多其他的很多,有的速度快但拆分包大 ... 看怎么选择。
        11
    gavin6liu   263 天前
    前面有人说签名问题,因为是基于二进制的,打包出来新包数据是完全一样的,md5 hash 都是一样的。所以没有签名问题
        12
    Trumeet   256 天前 via Android
    @tianlang1989 甚至可以用 PM 直接获取 apk 路径..
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2995 人在线   最高记录 5043   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 18ms · UTC 10:55 · PVG 18:55 · LAX 03:55 · JFK 06:55
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1