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

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

具体用的算法常用的就 bsdiff & bspatch ,也有很多其他的很多,有的速度快但拆分包大 ... 看怎么选择。
gavin6liu
2018-08-04 15:42:36 +08:00
前面有人说签名问题,因为是基于二进制的,打包出来新包数据是完全一样的,md5 hash 都是一样的。所以没有签名问题
Trumeet
2018-08-10 19:35:18 +08:00
@tianlang1989 甚至可以用 PM 直接获取 apk 路径..

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/476344

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX