Unity以分包(obb)形式集成到安卓原生 我慢慢填坑

unity项目集成到安卓原生

工作中有需要将unity项目集成到安卓原生中,随着工作推进需要分包去发布到google ,那么这时候就需要在unity出包时进行分包(android project+ obb)。
使用方法也是将unity部分当资源去调用,具体方法这里不讲。只讲分包后的注意点。(默认有一定的as使用基础)
我是做unity开发的,那么第一次肯定出apk加obb形式进行测试我们这边功能是否正确。(经过测试没有问题)。第二步 出android project加obb模式,这时候obb和工程时在同一目录下以 =》项目名称.main.obb 命名。

如何正确使用obb呢?

1.将obb名称修改成mian.[Bundle Version Code].[Package Name].obb 这里需要注意一下
2.将unity导出工程放入安卓项目中,理论只替换assets、jniLibs和libs
那么这时候点编译将工程部署到测试机中(这里讲一下我们是真机去调试没用自带的模拟器)
apk安装成功之后是可以运行但是会发现报错,原因是原来引用的一些资源没有被正确找到加载。obb就是存储那些资源的一个压缩包。关闭apk,将obb放入手机存储目录下 android/obb/[Package Name]/mian.[Bundle Version Code].[Package Name].obb 。重启apk

注意!!!
这时候如果你是使用Application.streamingAssetsPath去读取streamingassets文件夹下的某个文件时可能会出现找不到的问题!!输出一下路径大概是这个样子 =》jar:file:///data/app/x’x’x’x’x’x’x’x’x’x/base.apk!/assets/config_plat.json
那这个意思可以理解为是获取apk安卓包的安卓路径 并不是我们放置obb的位置的东西??
Excuse me? 我放了你不用?搞我? (搞了我很久 可能我比较菜 安卓懂得太少了)
最开始怀疑路径需要拼 ×
后来怀疑打包有问题 ×

插播一条旧闻=》
下面有unity对应的安卓路径给有需要的人
Application.dataPath : /data/app/xxx.xxx.xxx.apk
Application.streamingAssetsPath : jar:file:///data/app/xxx.xxx.xxx.apk/!/assets
Application.persistentDataPath : /data/data/xxx.xxx.xxx/files
Application.temporaryCachePath : /data/data/xxx.xxx.xxx/cache

obb有问题?那我就看看。修改后缀为zip 解压! 其中就是资源目录 巴拉巴拉一堆。也没发现有特殊内容。唯一特殊一点的就是一个0Kb文件(这个很重要!!!!!)。因为不太懂最底层的调用obb原理也没有怀疑这个东西!大错特错!这个文件有用!!!大大地有用!!!emmmm确切的说是文件名字有用。
最开始有疑问的地方是自己出apk加obb可以用为啥??放到别的项目用就不行呢。查了一下androidmanifest文件,其中有个unity build.id 值记录了一个和0kb文件名字类似的东西……
Unity以分包(obb)形式集成到安卓原生 我慢慢填坑
Androidmanifest.xml

莫非……嗯……果然……好了

到这里原生项目可以正常调用obb包内的资源了。
谢谢!

不会排版 凑合看吧 有问题私信 (小声bb一下 我可能也不常在)
如果有问题请加725608640 qq 群
原创转发请带链接!