5

如您所知,从android4.1开始,google已经支持智能应用更新。对于用户来说,当他们更新从 google play 安装的 android 应用程序时,他们只下载更改的内容,而不是下载所有的 apk。

在我的应用程序中,我也想支持 smartAppUpdates。现在我使用 bsdiff 和 bspatch。但我也认为当我更新我的应用程序时,用户下载它是如此之大。在我的应用程序的apk文件中,libs太大了,我的apk大约是11M,但是libs中的.so文件是9M。当我更新我的应用程序时,我从未更新过库。例如:我像这样使用 bsdiff

bsdiff old.apk new.apk diff.apk

new.apk 为 11.5M,old.apk 约为 11.4M,但 diff.apk 约为 6M。

当我更新我的应用程序时,我从未更新过库。

当我尝试压缩 diff.apk 以减少它时,但它没有使用。diff.zip 的大小等于 diff.apk 的大小

我该怎么做?每个人都在帮助我吗?提前致谢。

如何提高我的应用程序的增量更新效率?

4

2 回答 2

5

不幸的是,如果您使用 Google Play 分发您的应用程序,那么您无法对增量更新大小做很多事情。据我所知,谷歌的智能应用程序更新技术使用 GDIFF 增量编码算法,逐块比较旧 APK 和新 APK。这种方法的问题在于 APK 是文件的压缩存档。即使存档中文件的微小更改也会使您的 APK 文件在字节级别上看起来明显不同。本文中的更多信息:http: //ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber= 6563072

根据我的经验,你唯一能做的就是不使用 ProGuard,这显然是出于安全原因等原因。使用 ProGuard 混淆的代码往往会生成 20% 的增量文件。

于 2013-11-15T20:13:18.303 回答
1

这与增量更新无关,但与缩小 apk 的大小有关。通过使用 Proguard 收缩,我得到了惊人的结果。我已经从 4MB+ 的大小变成了大约 1MB。但说实话,实现起来并不容易:这里有一个指南:http: //developer.android.com/tools/help/proguard.html

于 2013-09-30T01:48:05.537 回答