首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

Unity 打包 VRAndroid 应用时一直停留在加载中

  • 24-12-13 10:44
  • 4519
  • 7307
juejin.cn

以前发在 CSDN 上, blog.csdn.net/u014443348/…

掘金氛围感觉更好一点,打算慢慢转过来。

最近在使用 Unity 打包的 VR Android 应用时碰到了一点问题:

这个应用可以以平面模式(2d),或者全景模式来播放视频。

之前我们测试的时候基本播放的都是本地视频,都是能正常播放。最近测试了下播放网络视频(局域网内),发现会出现一个情况:同一个视频有时能正常放,有时会一直停留在加载动画界面(如下图),按理说同一个局域网访问是很快的,不太像是因为网络的问题。

在这里插入图片描述

之前我们测试网络的时候没有发现这个问题,经过我不懈努力(胡乱踩坑)才注意到一个事情:我们原来打包的应用,使用的 Unity 是 2017.3 左右版本,播放网络视频时没有问题。但是那个版本打包出现会出现 jni 的一些错误,疑似是和播放器或者 Unity 本身有关。

java
代码解读
复制代码
29438-29461/? A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0xdd000000 in tid 29461 (UnityMain) 741-741/? A/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** 741-741/? A/DEBUG: Build fingerprint: 'Pico/A7210/PICOA7210:6.0.1/MXB48T/eng.scmbuild.20240125.143125:user/test-keys' 741-741/? A/DEBUG: Revision: '0' 741-741/? A/DEBUG: ABI: 'arm' 741-741/? A/DEBUG: pid: 29438, tid: 29461, name: UnityMain >>> cn.com.ihappy.music <<< 741-741/? A/DEBUG: signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0xdd000000 741-741/? A/DEBUG: r0 be4e7300 r1 dcfffff0 r2 00000cc0 r3 00000000 741-741/? A/DEBUG: r4 dcfffcd0 r5 be4e8000 r6 00000001 r7 00001000 741-741/? A/DEBUG: r8 00000001 r9 00001000 sl 00001000 fp dcfffcd0 741-741/? A/DEBUG: ip eadb0ebc sp ef3475d0 lr eaac4a4b pc f70d26a8 cpsr 200e0010 741-741/? A/DEBUG: backtrace: 741-741/? A/DEBUG: #00 pc 000176a8 /system/lib/libc.so (__memcpy_base+92) 741-741/? A/DEBUG: #01 pc 00163a47 /system/vendor/lib/egl/libGLESv2_adreno.so (_ZN9BltDevice17ExecFastCopyBlockEPvPKvjjjjPK7BltRectS5_i+102) 741-741/? A/DEBUG: #02 pc 00163daf /system/vendor/lib/egl/libGLESv2_adreno.so (_ZN9BltDevice14ExecFastSwCopyEP13BltExecSwCopy+846) 741-741/? A/DEBUG: #03 pc 00169a95 /system/vendor/lib/egl/libGLESv2_adreno.so (_ZN9BltDevice18ExecSwCopyInternalEP13BltExecSwCopy+7028) 741-741/? A/DEBUG: #04 pc 00169bad /system/vendor/lib/egl/libGLESv2_adreno.so (_ZN9BltDevice10ExecSwCopyEP13BltExecSwCopy+172) 741-741/? A/DEBUG: #05 pc 0013df9d /system/vendor/lib/egl/libGLESv2_adreno.so (_ZN9EsxBltLib16CopyHostPtrBltSwEPK17EsxBltCopyHostPtr+1212) 741-741/? A/DEBUG: #06 pc 001116c3 /system/vendor/lib/egl/libGLESv2_adreno.so (_ZN11EsxResource23UpdateSubResourceDirectEP10EsxContextjPK6EsxBoxPK20EsxSurfaceAccessDesci+642) 741-741/? A/DEBUG: #07 pc 000d3f73 /system/vendor/lib/egl/libGLESv2_adreno.so (_ZN10EsxContext17UpdateSubResourceEP11EsxResourcejPK6EsxBoxPK20EsxSurfaceAccessDesc+786) 741-741/? A/DEBUG: #08 pc 0012440f /system/vendor/lib/egl/libGLESv2_adreno.so (_ZN15EsxBufferObject6UpdateEP10EsxContextyjPKv+110) 741-741/? A/DEBUG: #09 pc 000bb267 /system/vendor/lib/egl/libGLESv2_adreno.so (_ZN10EsxContext12GlBufferDataEjlPKvj+102) 741-741/? A/DEBUG: #10 pc 000a3341 /system/vendor/lib/egl/libGLESv2_adreno.so (glBufferData+32) 741-741/? A/DEBUG: #11 pc 00564100 /data/app/cn.com.ihappy.music-1/lib/arm/libunity.so 741-741/? A/DEBUG: #12 pc 0053c704 /data/app/cn.com.ihappy.music-1/lib/arm/libunity.so 741-741/? A/DEBUG: #13 pc 0053c614 /data/app/cn.com.ihappy.music-1/lib/arm/libunity.so 741-741/? A/DEBUG: #14 pc 0054bb5c /data/app/cn.com.ihappy.music-1/lib/arm/libunity.so 741-741/? A/DEBUG: #15 pc 0054d0b4 /data/app/cn.com.ihappy.music-1/lib/arm/libunity.so 741-741/? A/DEBUG: #16 pc 002aaaac /data/app/cn.com.ihappy.music-1/lib/arm/libunity.so 741-741/? A/DEBUG: #17 pc 002a9c44 /data/app/cn.com.ihappy.music-1/lib/arm/libunity.so 741-741/? A/DEBUG: #18 pc 0047533c /data/app/cn.com.ihappy.music-1/lib/arm/libunity.so 741-741/? A/DEBUG: #19 pc 002382f8 /data/app/cn.com.ihappy.music-1/lib/arm/libunity.so 741-741/? A/DEBUG: #20 pc 00221814 /data/app/cn.com.ihappy.music-1/lib/arm/libunity.so 741-741/? A/DEBUG: #21 pc 005bdb08 /data/app/cn.com.ihappy.music-1/lib/arm/libunity.so 741-741/? A/DEBUG: #22 pc 005bfc48 /data/app/cn.com.ihappy.music-1/lib/arm/libunity.so 741-741/? A/DEBUG: #23 pc 0018f589 /data/app/cn.com.ihappy.music-1/oat/arm/base.odex (offset 0x14c000)

当时谷歌出的结果也是说这是 Unity 的问题,采用高版本打包即可解决。当时我们就使用了 2018.3 的版本,顺利解决了播放视频时报错的问题(必须要吐槽下 Unity 发版太频繁了,但是各版本兼容性又差)。但是并没有想起测试播放网络视频 ……

一验证,发现低版本(2017.3)打包出来应用的播放网络视频时确实没有出现停留在加载中的情况。这下就尴尬了 …… 低版本的打包可能要崩溃,高版本的打包可能要卡住。

经过两天的折腾,尝试了一些思路:

  • 打日志查询调用流程,卡在哪了。(调用逻辑没问题,至于 Start 为什么没有调用摸不到头绪,应该是 Unity 的框架层逻辑了,播放器的逻辑看了下异常的时候也没调用,也找不到原因)。
  • 既然搞不定代码,那就换个高版本的控件试试。播放使用的是 EasyMovieTexutre ,当前版本是 3.5.9 ,在网上下了 3.6.6 和 3.7.1 的版本,更新之后发现并没有不一样的地方。
  • 再次换个高版本的 Unity 试试,2019.2 ,结果公司显卡太差,工程都加载不出来,老板的意思也不太想换 ……

折腾了很久没有结果,头疼,然后就摸鱼了 …… 突然想起之前另一个类似的应用,也碰到过这种卡住的问题,但是因为是播放本地视频,第一直觉就是应用没有退干净。

查看 Unity 部分的代码,看到了如下方法。

C#
代码解读
复制代码
Application.Quit();

虽然不知道它退的效果怎么样,但是直觉是肯定没有 Android 杀进程快。(事实上我试了 Activity.finish() 感觉也还是不够干净)

java
代码解读
复制代码
android.os.Process.killProcess(android.os.Process.myPid());

然后将退出代码换成了 Unity 调用 Android 端的杀进程。
后面再播放网络视频时就没有出现停留在加载中的问题了。

留个笔记,给碰到相同的问题朋友参考下。

注:本文转载自juejin.cn的RamboPan的文章"https://juejin.cn/post/7447393715428671514"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

140
Android
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top