ARCore 配置¶
什么情况下需要使用ARCore¶
ARCore提供了在部分Android设备上的运动跟踪能力,请阅读 运动跟踪与EasyAR功能 来了解EasyAR功能与运动跟踪的关系,以及是否需要和什么时候需要使用ARCore。
选择 ARCore SDK¶
根据对ARCore的不同使用方式来更改 ARCore SDK
选项。
AR Foundation Or Optional
: 随EasyAR或AR Foundation
一起分发的ARCore SDK将会被包含在应用中,根据ARCore XR Plugin的设置决定。一般情况下推荐使用这个选项,它会自动处理AR Foundation
的情况。Optional
: ARCore 功能在支持ARCore并安装了Google Play Services for AR的设备上可以使用。Required
: 应用将只能在支持ARCore并安装了Google Play Services for AR的设备上运行。External
: 如果你在使用AR Foundation
或其它ARCore SDK分发,可以使用这个选项。这样随EasyAR一起分发的ARCore SDK将不会使用。你也可以使用这个选项来完全排除ARCore SDK在应用中的使用。
关于 Optional
和 Required
的详细说明及上线Google Play Store应用需要做的其它配置可以参考 Google的说明 。
重要
如果你需要在所有支持ARCore的小米和红米手机上使用ARCore,请使用AR Foundation。由于小米厂商实现有bug,EasyAR的ARCore实现已经禁用部分小米手机,包括米9、米10、红米K20、红米K30、红米K40等系列(这里列出的不全)。在这些手机上,默认配置下将不会使用ARCore,在支持EasyAR云端跟踪的手机上会使用EasyAR运动跟踪。
使用随插件分发的 ARCore SDK¶
在EasyAR Sense Unity Plugin中,ARCore的支持所需的库文件和配置已经在插件包中,但要在手机上运行,仍需在手机上安装 Google Play Services for AR 。
EasyAR的ARCore 封装在使用随EasyAR一起分发的ARCore SDK时,不会要求使用GLES3,这与 AR Foundation
所使用的 ARCore XR Plugin
不同。但是我们没有导出 ARCore
的丰富功能。如果你需要使用ARCore的平面检测等功能,仍旧建议使用 AR Foundation
。
使用ARCore必须使用Gradle 5.6.4或更高版本打包。如果当前使用的Gradle版本过低,打包时会弹出错误信息,这时如果选择继续打包,将会打包失败。
Unity 2019.4自带的Gradle版本低于上述要求,需按下面要求进行配置。对于其它版本的Unity,如果使用了自定义的Gradle,也需要确保Gradle版本满足要求。
Unity 2019.4¶
可以参考以下说明或 Google的说明 来更新工程使用的Gradle版本。
前往 Preferences > External Tools > Android > Gradle
,并设置Gradle为Gradle 5.6.4或更高版本。可以访问 Gradle构建工具 下载Gradle。
前往 Project Settings > Player > Android tab > Publishing Settings > Build
,选择这两个,
Custom Main Gradle Template
Custom Launcher Gradle Template.
然后根据下面描述修改这两个文件,
Assets/Plugins/Android/mainTemplate.gradle
Assets/Plugins/Android/launcherTemplate.gradle
删除文件顶部注释(如果存在),
// GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN
然后在文件顶部插入以下几行,
buildscript {
repositories {
google()
jcenter()
}
dependencies {
// Must be Android Gradle Plugin 3.6.0 or later. For a list of
// compatible Gradle versions refer to:
// https://developer.android.com/studio/releases/gradle-plugin
classpath 'com.android.tools.build:gradle:3.6.0'
}
}
allprojects {
repositories {
google()
jcenter()
flatDir {
dirs 'libs'
}
}
}
如果你使确实不需要使用ARCore,可以选择 Continue and disable ARCore
,或者选择 Disable AR Core
选项,这将关闭打包时的检查。如果在关闭ARCore的情况下使用EasyAR的ARCore封装(包含它在场景中时对其自动进行可用性检查),将在运行时弹出提示信息。
Target Architecture¶
根据Google的政策,在arm64的设备上运行仅有armv7的程序,ARCore不会正常工作。在打包时如果未选择ARM64会弹出警告,
这时需要修改项目配置,使用IL2CPP编译并选择ARM64支持。
如确有需要,你可以选择 Continue and don't warn me again
,或者关闭 Verify 32bit Only AR Core When Build
选项,这将关闭打包时的检查。关闭检查只是在打包时不弹出提示,但运行时在一些设备上将有可能出现异常,包括但不限于崩溃或黑屏等。
使用 AR Foundation的 ARCore SDK¶
如果需要使用 AR Foundation的 ARCore SDK,可以参考 Google的说明 进行配置,这时 ARCore SDK
选项需要选择 AR Foundation Or Optional
或 External
。
使用其它ARCore SDK¶
如果有其它第三方插件或项目内有ARCore SDK的分发,也可以使用这些ARCore SDK。这时 ARCore SDK
选项需要选择 External
,并根据具体插件或项目的要求进行配置。