Unity 导出安卓 obb 包以及使用(基础APK+OBB)
obb简介
OBB(Opaque Binary Blob)文件格式,是安卓游戏通用数据包。在一些大型游戏上较为常见,同时还附以Data文件,亦或是md5.dat文件出现。通常在游戏开始前,程序会自动将obb解包至/sdcard/Android/data或者是/android/obb目录下,但也有游戏不会解包,直接读取。
前言
游戏要上架谷歌商店 除了要接好谷歌SDK外,谷歌还要求提交商店的apk必须在100M以下,对于游戏来说几乎都会大于100M,所以提交商店apk拆分成基础apk(小于100M)+obb文件,两个文件一起上传GooglPlay,用户下载的时候会连同apk+obb一起下载到用户手机上,当然对于用户来说,完全感受不到区别的。
1.Unity导出OBB文件步骤如下
打开Unity工程 File --- Build Settings ---Android --- Player Settings --- Publishing Settings --- Split Application Binary
Unity-OBB..png选择Build System : Gradle 来构建AS工程和OBB文件
2.Unity构建OBB工程和AS资源
GradleBuild.png如图所示GradleBuild.png,构建成一份安卓资源和obb文件,将构建的src资源放入对应AS工程中,obb文件放入手机指定路径。
androidProject.png
如图所示:androidProject.png,这里面包含了google 相关的依赖资源和Unity交互代码,把Unity生成AS工程放入对应文件即可(箭头所示)。运行后生成apk即,正常情况下生成的基础apk是可以单独运行,因缺少obb资源包 游戏会卡在某个阶段,但并不会引起程序崩溃。
obb.png :obb可以理解为就是一份游戏资源,图片obb.png红线所标注一定要和AndroidManifest.xml中的:
<meta-data android:name="unity.build-id" android:value="49abe192-850d-4f39-8461-a9c11795c7b3" />value值对应上,不然会导致obb无法自动合并。
3.OBB文件格式
obb文件有命名规范,如果命名规范不对程序无法读到对应文件导致基础包无法合并资源 ,从而无法完整运行游戏。命名规则如下
格式 : main.<Bundle Version Code>.<包名>.obb
例如 : main.15.com.game.demo.obb
4.测试obb文件是否能正常的跑通游戏
如果我们先运行基础APK /Android/obb/com.game.demo/文件夹会自动创建,如果没有运行我们需要手动创建对应文件夹。例如我的测试机路径 :
Honor NOTE 8\内部存储\Android\obb\com.game.demo\main.15.com.game.demo.obb
结语
第一次写blog,如果那里写的有问题不吝指教,写blog的目的很明确:记录下自己的学习和工作经验,分享给有需要的人。