定位unity在rk3288平台上音频解码无效的bug---定位终成功

来源:互联网 发布:淘宝网多肉植物 编辑:程序博客网 时间:2024/06/07 03:36
定位unity在rk3288平台上音频解码无效的bug
作为一个完全不懂unity的人,从0开始定位,略麻烦。。。


背景:公司开发了一款基于UNITY的游戏,作为一个亮点宣传。
问题:游戏在RK3288平台上无法正常使用。音频文件无法解码。播放出来都是滋滋滋滋杂音。。。
游戏:委托第三方开发
平板:由方案公司提供,方案公司又需要RK支持才能解决。
现状:这里其实是4方,我司是甲方,乙方各执一词,不牵头定位就找不到原因,游戏必然被砍。要求方案公司查,然后方案公司再去找RK,呵呵,基本没戏。方向在游戏商上。


定位开始:
1. RK3288对游戏引擎的支持不行
---思路------------------判断是否是通病,找市面上现有的相同引擎开发的可正常使用的游戏测试.
---解决------------------根据百度,找到一款:涂鸦保龄球,可以正常出声。经过解包确认,的确是用的unity引擎(游戏方居然跟我说不肯定是不是用的unity,还是得靠自己啊)---排查完毕
2. RK3288对游戏引擎的不同版本支持不行
---思路------------------在1的基础上,判断是否对不同版本的支持不一样?
---解决------------------要求游戏方编译一个最简单的demo程序,仅播放音频,方便降级升级unity引擎版本
3. 不同Unity的音频文件提取进行测试
---解决------------------经分析,音频文件在unity中会被转换一次,重新生成新文件,并由产生索引文件定位,从游戏产生的apk中可以体现,resource全部为无扩展名的文件,由unity_default_resources和unity_builtin_extra进行定位。-------此路不通
4. unity3d调用的so库是否可查
---解决------------------unity3d是一个收费引擎,闭源的,无法从底层着手处理,只能测试。-------此路不通
5. unity3d是否分音频引擎和视频引擎,是否之间有影响?
---解决------------------游戏的渲染,是否会对音频io产生影响,在闭源的情况下,这些实现细节不得而知,只能测试。--------此路不通


小结:不知道游戏在产生时调用的so,不知道引擎渲染是否有影响,不知道其他游戏的音频文件。

那边只能,通过版本先定位了


艰辛定位路

1. 按照之前的思路, 再次试了10款游戏, 均正常. 

2. 这10款游戏随机查看其中的unity版本, 发现均在3.x 4.x的样子

3. 游戏方给出demo进行试验

 
第一版:AudioTestProject.apk --- unity5.x,打包环境android5.1,  我方机器(android 5.1.1)
-------------result:  failed-----声音播放失败


第二版:AudioTestProject.apk --- unity4.x,打包环境android4.0.3,我方机器(android 5.1.1)
-------------result:  passed-----声音一切正常


第三版:AudioTestProject.apk --- unity4.x,打包环境android4.4,  我方机器(android 5.1.1)
-------------result:  passed-----声音一切正常


第四版:AudioTestProject.apk --- unity5.x,打包环境android4.0.3,我方机器(android 5.1.1)
-------------result:  failed-----按键点击无效


第五版:AudioTestProject.apk --- unity5.0.1,打包环境android4.0.3,我方机器(android 5.1.1)
-------------result:  failed-----按键点击无效---但是音乐播放成功


第六版:AudioTestProject.apk --- unity5.0.1,打包环境android4.0.3,我方机器(android 5.1.1)----经过游戏方修改
-------------result:  passed-----按键正常,音乐正常


总结:
unity5.0之后,不向下兼容----故,在android4.x上都是没问题的,唯独升上android5.x就出现问题。
也说明了unity5.x 对 android5.x的兼容性存在问题。有待提高。


为今之计,解决策略:只能是unity降低版本。具体做法:改版到低版本,找到一个最接近的unity版本,剩下的再测试游戏,修改ERROR


定位问题不难,难的是沟通,跟方案公司的沟通,真累啊...

0 0
原创粉丝点击