Java 读取 Assets Zip文件并解压到SD卡指定目录

/ 0评 / 0

这个不是一篇教程,只是今天下午为了进一步改造安卓项目的apk安装流程的操作心得。

目前安卓项目使用的是 Java + NDK 进行开发,由于资源文件非常大,暂时也没时间优化和精简部分资源文件大小,目前压缩成 Zip 包,大概有 2gb 左右。之前我采用的方法是编译好 apk 让用户直接安装,大小只有 2-3mb,然后第一次启动申请相关权限,再检测远程 oss 的 apk 版本是否需要更新。之后就读取写入在 apk 当中的下载更新列表,并与本地的文件夹与文件大小进行比较。因此,用户第一次启动下载,大概就需要下载 2-3gb 的文件。但是在实际的使用过程中出现很多细节问题,严重影响安装流程体验。

比如说,用户下载过程中信号不好或者网络不好导致中断,我的下载模块写得太不好,虽然有些断线续传,但是还是经常失败。另外就是部分安卓手机可能运存不够,导致下载过程中闪退或者解压缩失败等问题。

所以一直想要把安卓项目改成本地化安装,就是把所有资源文件,全部打包成 zip 压缩包,塞到 apk 当中,并在用户第一次启动的时候,解压缩到手机根目录指定文件夹。从第二次启动开始,就检查是否已经解压缩过,如果是,则不再解压缩。并继续进入检测 apk 版本和新的更新文件列表即可。

实现思路:

由于时间有限,又要去带娃洗澡睡觉了,今天暂时只折腾到这里,后续继续完善成为 7z 格式,并优化解压缩的内存问题和性能问题,还有大量的细节和优化空间。

当初设定的小目标基本实现了:

这个水文就是简单记录一下实现的思路,距离完美还有非常远的距离,回头继续搞起,没时间,不可能写成教程类,暂时也达不到教程水平,都是非常简单粗暴的实现需求而已。

发表评论

电子邮件地址不会被公开。 必填项已用*标注