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在应用中的使用。

../_images/image_g4_1.png

关于 OptionalRequired 的详细说明及上线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版本过低,打包时会弹出错误信息,这时如果选择继续打包,将会打包失败。

../_images/image_g4_15.png

Unity 2019.4自带的Gradle版本低于上述要求,需按下面要求进行配置。对于其它版本的Unity,如果使用了自定义的Gradle,也需要确保Gradle版本满足要求。

Unity 2019.4

可以参考以下说明或 Google的说明 来更新工程使用的Gradle版本。

前往 Preferences > External Tools > Android > Gradle ,并设置Gradle为Gradle 5.6.4或更高版本。可以访问 Gradle构建工具 下载Gradle。

../_images/image_g4_13.png

前往 Project Settings > Player > Android tab > Publishing Settings > Build ,选择这两个,

  1. Custom Main Gradle Template

  2. Custom Launcher Gradle Template.

../_images/image_g4_14.png

然后根据下面描述修改这两个文件,

  • 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封装(包含它在场景中时对其自动进行可用性检查),将在运行时弹出提示信息。

../_images/image_g4_10.png

Target Architecture

根据Google的政策,在arm64的设备上运行仅有armv7的程序,ARCore不会正常工作。在打包时如果未选择ARM64会弹出警告,

../_images/image_g4_11.png

这时需要修改项目配置,使用IL2CPP编译并选择ARM64支持。

../_images/image_g4_6.png

如确有需要,你可以选择 Continue and don't warn me again ,或者关闭 Verify 32bit Only AR Core When Build 选项,这将关闭打包时的检查。关闭检查只是在打包时不弹出提示,但运行时在一些设备上将有可能出现异常,包括但不限于崩溃或黑屏等。

../_images/image_g4_12.png

使用 AR Foundation的 ARCore SDK

如果需要使用 AR Foundation的 ARCore SDK,可以参考 Google的说明 进行配置,这时 ARCore SDK 选项需要选择 AR Foundation Or OptionalExternal

使用其它ARCore SDK

如果有其它第三方插件或项目内有ARCore SDK的分发,也可以使用这些ARCore SDK。这时 ARCore SDK 选项需要选择 External ,并根据具体插件或项目的要求进行配置。