2022 年 11 月针对 ARCore SDK for Android (Kotlin/Java) 弃用了移除摄像头方法

2022 年 11 月,面向 AR 的 Google Play 服务将移除与 NDK 相机图片和元数据相关的已废弃方法。

在受影响的 ARCore SDK 版本中使用这些方法的应用可能会在用户更新面向 AR 的 Google Play 服务时开始出现不同的行为或崩溃。

受影响的应用

从 2022 年 11 月开始,在以下情况下,当用户更新到最新版本的面向 AR 的 Google Play 服务时,您的应用可能会停止运行或崩溃:

  1. 您的应用是使用受影响的 SDK 编译的
  2. 您的应用使用了以下任一受影响的 API:
如果您的应用是使用
ARCore SDK 版本编译的...
以及使用受影响的 API... 自 2022 年 11 月起的重大行为
1.19.0 或更低版本 Frame.getImageMetadata() 抛出 IllegalArgumentException
1.10.0 或更低版本 Frame.acquireCameraImage() 返回尺寸为 0x0 的图片。

修复受影响的应用

受影响的应用可能会在 2022 年 11 月出现服务中断。为缓解此问题,请使用最新的 ARCore SDK 重新构建您的应用。您必须至少升级到 ARCore SDK 1.20.0 或更高版本。

验证受影响的应用是否已修正

通过在应用的 AndroidManifest.xml 中添加特殊的 meta-data 条目,提前模拟 2022 年 11 月的更改,从而测试应用:

  1. 确保目标设备上安装了 Play AR 服务 1.29.0 或更高版本。
  2. 在应用的 AndroidManifest.xml 文件中,添加新的 <meta-data> 标记作为现有 <application> 元素的子元素:

    <application …>
      …
    
      <!--
           Simulate the November 2022 changes in advance.
           IMPORTANT: Remove this tag when testing is completed.
           Do not include this tag in published versions of your app.
      -->
      <meta-data android:name="com.google.ar.core.session_settings"
                 android:value="camera_stack_option,unified_mono" />
    </application>
    
  3. 测试您的应用,并验证所有 ARCore 功能是否按预期运行。

  4. 测试完成后,移除 <meta-data> 标记。在已发布的应用中保留此标记可能会导致将来出现意外行为。

如果应用正常运行,则表示该应用已为 2022 年 11 月的变更做好准备。

时间表

时段 活动
2020 年 11 月
(ARCore SDK 版本 1.20.0)
废弃了原生 API。
更新了实现以使用替代的原生 API。
2021 年 11 月 宣布将于 2022 年 11 月从面向 AR 的 Google Play 服务中移除受影响的 API 的未来破坏性更改。
2022 年 11 月 从“面向 AR 的 Google Play 服务”中移除受影响 API 的实现。
针对使用 1.20.0 之前的 ARCore 版本的应用引入了重大变更。