Unity开发的AR应用在三星Android11设备提示需最新ARCore但已安装,如何解决
问题解决方案
1. 优先检查ARCore SDK与Unity版本适配
- 首先确认项目中使用的ARCore SDK版本是否支持Android 11,ARCore SDK 1.22.0及以上版本才正式兼容Android 11,如果项目使用的版本低于该值,直接升级ARCore SDK到最新稳定版即可解决绝大多数版本匹配问题。
- 同步检查Unity版本适配:Unity 2019.4.x及以上长期支持版本对ARCore的Android 11适配更完善,如果使用的是2018或更早的Unity版本,建议升级到对应LTS版本后重新打包测试。
2. 修正Android 11的包可见性配置
Android 11 引入了包可见性限制,应用默认无法直接查询到设备上安装的其他应用,如果没有在AndroidManifest.xml中配置ARCore的包查询权限,就会出现明明已经安装ARCore但应用检测不到的情况:
- 打开项目中自定义的
AndroidManifest.xml,在<manifest>根节点下添加如下查询声明:
<queries> <package android:name="com.google.ar.core" /> </queries>
- 如果是用ARCore Extension for Unity自动生成Manifest的,也可以在ARCore插件的设置面板中开启Android 11包可见性支持选项,插件会自动添加上述配置。
3. 检查ARCore依赖声明配置
- 确认项目中ARCore的依赖模式是否符合需求:
- 如果应用是AR必选应用,需要在Player设置的Android配置栏中,把
AR Core Required选项设置为开启,此时打包时会自动声明依赖ARCore,应用只能在支持ARCore的设备上安装 - 如果是AR可选应用,把上述选项设置为关闭,同时需要自行在代码中添加ARCore可用性检测逻辑,避免误触发安装提示
- 如果应用是AR必选应用,需要在Player设置的Android配置栏中,把
- 不要手动硬编码ARCore的版本号做校验,ARCore SDK本身自带的校验逻辑已经适配了各版本的版本号规则,自定义校验很容易出现版本判断错误。
4. 验证打包签名配置
部分三星Android 11设备对应用的签名校验更严格,如果应用使用了自定义签名,确认打包时用的签名文件是正确的,且没有使用测试签名在正式设备上安装,避免系统拦截应用对ARCore服务的调用。
5. 本地复现调试
如果上述配置都调整后还是有问题,可以按如下步骤调试定位问题:
- 在三星测试设备上开启USB调试,连接电脑后用adb命令查看ARCore的实际版本:
adb shell dumpsys package com.google.ar.core | grep versionName,确认输出的版本号确实是最新版 - 在Unity中开启开发模式打包,运行应用时查看Logcat日志,过滤
ARCore标签的日志,就能看到ARCore检测失败的具体原因,根据错误信息针对性调整即可。
内容的提问来源于stack exchange,提问作者Hope1_
相关产品推荐
相关产品推荐

