Java 检测文件MD5实现游戏资源文件更新

/ 0评 / 0

今天准备把安卓项目的资源文件更新部分改一下,原来使用的是获取文件的byte长度来判断是否需要更新。这种方法性能不错,但是有一个缺点,就是当我某个bin资源包更新了bmp文件之后,如果我的另外一个spr文件中并不需要更新精灵的动画参数的话,那么我的spr.bin文件的byte并不会发生改变。

这样一来我就没有办法实现精准的更新,就会导致更新之后精灵的动画错乱了。

实现思路

我的思路是改成判断文件的MD5来实现是否需要更新。

由于安卓项目目前使用的是Java + NDK 模式进行开发,启动游戏之后,会先由Java模块的代码根据我的OSS上写的配置文件进行判断APK版本是否需要更新,之后才是判断本地bin资源文件是否需要更新。因此实现的方式比较简单,我只需要将原来getByte的方法,修改成获取MD5值,然后将更新列表修改成每一个文件的MD5值即可。

Java 中获取文件MD5值我选择以下这种方法来实现:

DigestUtils.md5Hex(new FileInputStream(path));

而生成文件的MD5值,也有很多方法,我一般使用 miniMD5 这个小工具。当然也可以通过命令行来进行生成,Win 下具体查看某个文件的MD5值如下:

certutil -hashfile [文件路径] MD5

后续还考虑将更新列表也做成远程列表,目前还是比较落伍,写在 APK 当中,这样无法实现热更新bin资源文件。

今天先把MD5更新搞定先。

发表评论

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