2022 年 11 月,面向 AR 的 Google Play 服务将移除与 NDK 相机图片和元数据相关的已废弃方法。
在受影响的 ARCore SDK 版本中使用这些方法的应用可能会在用户更新面向 AR 的 Google Play 服务后开始表现出不同的行为或崩溃。
受影响的应用
自 2022 年 11 月起,如果您的应用存在以下情况,当用户更新到最新版 Google Play 服务(适用于 AR) 时,应用可能会停止运行或崩溃:
- 您的应用是使用受影响的 SDK 编译的
- 您的应用使用了以下任何受影响的 API:
如果您的应用是使用 ARCore SDK 版本编译的… |
并使用受影响的 API… | 自 2022 年 11 月起的破坏性行为 |
---|---|---|
1.22.0 或更低版本 | ArImage_getNdkImage() (在 ARCore SDK 1.23.0 中已移除) |
在生成的 AImage 结构体中返回 NULL 。 |
1.22.0 或更低版本 | ArImage_getNdkCameraMetadata() (在 ARCore SDK 1.23.0 中已移除) |
在生成的 ACameraMetadata 结构体中返回 NULL 。 |
修复了受影响的应用
受影响的应用可能会在 2022 年 11 月出现故障。为缓解此问题,请为受影响的方法使用即插即用替换项:
ArImage_getNdkImage()
和AImage_*
方法:使用ArImage
中的相应方法。例如:ArImage_getNdkCameraMetadata()
:请改用ArImageMetadata_getConstEntry()
验证受影响的应用是否已修复
通过向应用的 AndroidManifest.xml
添加特殊的 meta-data
条目,提前模拟 2022 年 11 月的变更,以便测试应用:
- 确保目标设备上安装了 1.29.0 或更高版本的 Play 服务(适用于 AR)。
在应用的
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>
测试您的应用,并验证所有 ARCore 功能是否按预期运行。
测试完成后,请移除
<meta-data>
标记。如果在已发布的应用中保留此标记,日后可能会导致意外行为。
如果应用正常运行,则表示该应用已做好 2022 年 11 月变更的准备。
时间轴
时段 | 事件 |
---|---|
2020 年 11 月 (ARCore SDK 版本 1.20.0) |
废弃受影响的 API,引入可替代的 API。 |
2021 年 2 月 (ARCore SDK 版本 1.23.0) |
从 ARCore SDK 中移除了之前已废弃的 API 签名。 |
2021 年 11 月 | 由于我们计划于 2022 年 11 月从面向 AR 的 Google Play 服务中移除受影响 API 的实现,因此提前通知未来将发生的重大变更。 |
2022 年 11 月 |
从“面向 AR 的 Google Play 服务”中移除了受影响 API 的实现。 对使用 1.23.0 之前的 ARCore 版本的应用引入了破坏性更改。 |