Android Studio集成ARCore时清单元数据缺失报错求助
解决ARCore支持性检查时的FatalException错误
首先,咱们直接抓错误核心:Application manifest must contain meta-data com.google.ar.core.min_apk_version——这个报错已经把问题说得明明白白,你在AndroidManifest.xml里漏掉了ARCore强制要求的元数据项,而且这个配置和你在build.gradle里设置的minSdkVersion完全是两回事:
minSdkVersion定义的是你的应用兼容的Android系统最低版本com.google.ar.core.min_apk_version定义的是你的应用兼容的ARCore服务最低版本,ARCore需要这个值判断设备上的ARCore服务是否能匹配你的应用需求
具体修复步骤
- 在AndroidManifest.xml中添加缺失的元数据
在你的<application>标签内部,已经有了<meta-data android:name="com.google.ar.core" android:value="optional" />,现在再补充下面这行代码:
<meta-data android:name="com.google.ar.core.min_apk_version" android:value="11800000" />
这里的value是根据你使用的ARCore版本1.18.0转换来的:转换规则是主版本号*10000000 + 次版本号*100000 + 补丁版本号*1000,所以1.18.0计算后就是1*10000000 + 18*100000 + 0*1000 = 11800000。
- 验证现有配置的正确性
你的现有配置里:
implementation 'com.google.ar:core:1.18.0'依赖版本正确google()仓库配置没问题com.google.ar.core设为optional的配置合理(允许不支持ARCore的设备安装应用)
关于Android Studio的URI未注册提示
这个提示只是编辑器的小bug,和ARCore的报错完全无关,你可以直接忽略它。如果看着不舒服,试试清理Android Studio缓存(File → Invalidate Caches... → Invalidate and Restart)或者更新到最新版本的Android Studio就能解决。
额外优化建议
你的Check_AR()方法用了同步的checkAvailability,虽然在1.18.0版本能运行,但ARCore官方从1.8版本开始就推荐使用异步的checkAvailabilityAsync方法,避免阻塞UI线程,示例代码如下:
ArCoreApk.getInstance().checkAvailabilityAsync(this, availability -> { if (availability.isTransient()) { new Handler().postDelayed(this::Check_AR, 200); } else { Flag_AR = availability.isSupported(); Log.d("TAG", "Check_AR: " + Flag_AR); } });
内容的提问来源于stack exchange,提问作者Evosub
相关产品推荐
相关产品推荐

