ARCore 中文文档 下载 App

Android 模拟器调试 ARCore 应用

为什么要提模拟器

ARCore 的大多数功能依赖真实摄像头和传感器数据,在没有物理测试设备时模拟器是退而求其次的选择——但它远不如真机好用,适合做以下工作:

以下功能模拟器完全不支持:运动跟踪、平面检测、Depth API、Geospatial API、Augmented Images、Augmented Faces。

模拟器配置步骤

步骤一:创建 AVD(Android Virtual Device)

打开 Android Studio → Tools → Device Manager → Create Device:

  1. 选择设备定义:推荐选 Google Pixel 4 / 5 / 6,分辨率 1080p 以上
  2. 选择系统镜像:必须选 x86_64 架构的系统镜像,API Level ≥ 27(Android 8.1+)
  3. 启用摄像头:在 AVD 的高级设置中,确保摄像头被启用(可以选择使用主机摄像头或虚拟场景)
  4. 完成创建

模拟器不支持任何有深度传感器的硬件模拟——Depth API 在模拟器上永远返回空数据,Geospatial API 同样不可用。

步骤二:模拟器摄像头配置

模拟器有两种摄像头模式:

模式说明适用场景
Host使用电脑的物理摄像头作为 ARCore 输入测试摄像头权限逻辑、ARCore Session 能否正常初始化
Virtual Scene显示一个虚拟的 3D 场景(如一个房间),ARCore 可以从中识别特征点测试 Session 创建和基本帧循环(但识别效果非常有限)

推荐使用 Host 模式:它至少能让你测试 Session 能否打开、帧循环是否正常、摄像头权限请求流程。

步骤三:运行 ARCore 应用到模拟器

像调试普通 Android 应用一样,选择模拟器作为运行目标即可。如果遇到错误:

Unity 中的模拟器配置

Unity 开发时模拟器配置稍微麻烦一些:

  1. Unity Build Settings → Android → Switch Platform
  2. 确保 Build Settings 里有正确的 ADB 路径(通常自动检测)
  3. 在 Unity 中点击 Play 前,先在 Android Studio 的 Device Manager 中启动模拟器
  4. Unity 会自动检测到运行的模拟器并可以 Build & Run

Unity 的 AR Session Origin 在模拟器上会尝试创建 Session,失败时会静默处理——你需要自己添加日志确认 Session 状态。

模拟测试场景:虚拟 AR 数据注入

Google 提供了 FakeSession 测试工具,可以在单元测试中注入假的相机 pose 和帧数据,而不依赖真实传感器或模拟器摄像头:

// 单元测试中使用 FakeSession
val fakeSession = FakeSession(AndroidVersion.SDK_TYPE_CURRENT)
fakeSession.resume()

// 手动设置一个假的 camera pose
val fakePose = Pose(Vector3(0f, 0f, -3f), Quaternion.identity())
fakeSession.setCameraPose(fakePose)

// 在测试循环中更新 session
while (fakeSession.update(frame)) {
    // 用假数据跑你的渲染逻辑
}

这对于自动化测试场景非常有用——你的 AR 应用逻辑可以脱离真实硬件被持续验证。

真机远程调试的替代方案

如果你没有实体 Android 设备但需要测试真实 ARCore 行为,几个替代选项:

总结

模拟器是 ARCore 开发中的"最低配选项"——能帮你过基本流程,但不能替代真机调试。运动跟踪、平面检测、Depth 数据这些核心功能必须在真实设备上测试。建议开发前先准备好至少一台支持 ARCore 的 Android 手机和一台 iPhone(如果涉及跨平台功能)。