Google obb扩展包测试小记

由于Google提审的限制,一般来说app的安装包都不能超过100M。但是对于游戏来说,尤其是现在的大型手游,动辄上G的包体都是很常见的了。那么我们就需要借助分包下载的方式来解决这个问题。

分包下载一般分为两种方式:

一种是把代码和一些基础资源打进apk里面,让玩家在下载完成后可以直接进入游戏,不影响玩家最初的体验。当玩家达到某个等级、需要使用新资源的时候,客户端再触发分包下载和后台静默更新。
另一种是我今天要提到的,也是我目前项目里遇到的情况,就是需要玩家在GooglePlay完整下载obb+apk。这个方式的优点是使用Google原生的分包策略,对于大部分Unity项目来说都很适用,接入也比较简便。
首先说一下obb的基本规则。

obb扩展文件的命名规则为:

main文件:main...obb
patch文件:patch...obb
按照Unity分包的规则,主apk文件主要包括Java、Native代码、游戏脚本、插件以及第一个场景包含的所有资源。obb包主要是资源文件,在Unity打包apk过程中,会把所有的资源文件(包括 streaming Assets)打包到Assets目录下,而obb分包后会将第一个场景以外的资源都打包到obb目录中,在apk启动后,会根据相应命名规则从obb中加载资源文件(一般来说是直接从/Android/obb/里面直接读取文件加载)。

然后再来说说我这个项目的一个特殊问题

由于我们项目接入了第三方的音频sdk,而这个sdk不能读取到/Android/obb/路径下面的文件,所以这部分音频就会加载失败。经过开发内部讨论后,我们采用了一个讨巧的方法来避开这个问题:当游戏安装后第一次启动的时候,客户端会重新将这部分音频文件复制到/Android/data//路径下面,供第三方sdk使用。

基于以上两点,我这边的测试要点也就基本定出来了:

1.手机存储空间对obb下载和启动加载的影响;
2.下载obb文件期间需要测试断点续传;
3.语音资源需要重新从obb中拷贝到游戏路径里使用,需要预留手机存储空间给这个操作;
4.当obb目录下存在多个obb文件时,应该读取对应bundle-version版本的文件;
5.obb误删后的恢复(这个是Google原生的接口,当obb文件误删后会重新提示下载);
6.首次启动客户端查看资源加载是否正常,后续再启动游戏应该不会反复加载语音部分;
7.obb语音部分加载完成后的游戏客户端资源热更是否正常;
8.游戏启动后录音等权限禁用和启用后是否正常;
9.后续有新的整包版本后,Google商店静默强更是否正常;
10.正常跑游戏,看资源加载是否正常;
11.卸载后obb是否正常删除;
12.机型适配测试;

除以上测试点外,网上还搜到疑似有很多游戏的玩家反馈下载obb文件遇到写保护,文件无法拷贝到obb目录下的问题,这个也需要注意观察在自己的测试中是否有出现。另外在线上玩家出现这一问题的时候需要有备用解决方案。



留言