Unity3d 用ARFoundation开发安卓AR应用黑屏闪退问题

前言

AR Foundation允许你在Unity内以多平台方式作增强现实平台。该插件为Unity开发者提供了一个界面,但本身并未实现任何增强现实功能。要在目标设备上使用AR Foundation,还需要为Unity 官方支持的目标平台单独提供软件包,如要开发安卓AR功能需要ARCore XR插件,而苹果系统则需要ARKit XR插件。它的核心价值在于,开发者只需编写一套代码,即可部署到多个主流移动平台。它的核心功能有图像识别追踪、人脸识别追踪、3D物体识别追踪等。它可以使我们快速的构建跨平台的AR应用,我快速导入识别图,绑定识别效果,以为如此快速的方式即实现了功能,但是真正打包、运行使用起来发现坑点很多。

问题

黑屏:应用安装后能够正常打开,但进入 AR 场景后,屏幕一片漆黑,没有摄像头画面。

闪退:启动应用、点击进入AR功能、点击几次按钮应用闪退。

原因

起初我以为是我的设置问题,因为我并未编写一行代码,跟着很多教程操作了多遍依然有如上问题,所以,我索性拉取了官方提供的案例工程(ARFoundation Samples),打包尝试后依然是同样的问题。 最后翻遍了AR Foundation的文档和AR Core文档,终于在AR Core的说明文档里找到了支持的设备(中国) ,是我的手机不在ARCore支持在中国地区销售设备列表内。果然,我尝试换了一部手机功能正常了。

支持机型见文末

最新可以进入查询:

https://google-developers.gonglchuangl.net/ar/devices?hl=zh-cn#android_china

ARCore的限制

AR Foundation极大简化了跨平台AR应用的开发流程,方便快捷完成AR应用的开发,但是这也难掩ARCore的对底层平台的限制(尤其是安卓的碎片化和国内环境)。

1设备受限

ARCore指定了他们的认证流程,只有通过认证的设备才会受ARCore支持,而其他设备将无法正常体验AR功能。

2 "谷歌服务"依赖

在海外,ARCore 作为 Google Play Services 的一部分进行推送。在国内,这需要单独、再次安装Google Play Services 。

3 功能支持差异

即使在同一品牌的不同型号上,对 Depth API、Environment Probes 等高级功能的支持也参差不齐。若在代码中强行调用不支持的 API,极易导致不稳定或崩溃。

4系统版本

不同手机厂商对 Android 系统的定制,可能导致 ARCore 服务在某些 ROM 上行为异常,增加了出现黑屏、闪退等未知问题的几率。

结语

开发AR应用,尤其是面向碎片化严重的安卓生态,需要做好硬件、系统和平台限制的对比研究与评估。AR Foundation提供了强大的武器,但其底层依赖(ARCore)的局限性,对于AR Foundation的选用还需要深思熟虑。从机型支持、功能支持与谷歌服务依赖等几个问题需要开发者与决策者有预期的心理落差。

相关推荐
木头左3 小时前
【架构设计】教育类 App 服务端化改造:AI 上移、题库分层与个人题库归属
android·架构设计·系统设计·后端开发·数据库设计
墨狂之逸才4 小时前
USB 的 HOST 和 DEVICE 到底有什么区别?ADB 调试应该选哪个?
android
奶油话梅糖5 小时前
苹果的内核跑上了安卓手机:2,631 Star 的 HakiOS 让 XNU 在 Adreno GPU 上画出 118 帧
android·macos·智能手机
恋猫de小郭5 小时前
Flutter THLC 的 WebView 滚动终于从 70 FPS 提升到 120 FPS
android·前端·flutter
好的佩奇16 小时前
Dart 之扩展类型
android·flutter·dart
alexhilton18 小时前
2027 Android 开发者路线图:学习、面试与 AI
android·kotlin·android jetpack
灿飞屋20 小时前
Kotlin与Java虚拟机三:控制流
android·java·开发语言·后端·python·kotlin·安卓
疯华整猫21 小时前
我用 Trae 把 Android 内存账重算了一遍
android·性能优化·源码
TimeFine1 天前
AI 编程工作流的设计:从人工判断到 AI裁判
android·ai编程
阿杰m1 天前
Android源码第四章:Android 系统启动——App 的第一行代码从哪来?
android