返回

AOSP 构建错误:如何解决设备清单与框架兼容性矩阵不匹配问题?

Android

AOSP 构建错误:如何解决设备清单与框架兼容性矩阵不匹配问题

背景

在构建 Android 开源项目 (AOSP) 时,开发者可能会遇到以下错误:

FAILED: ninja: 'device/google/cuttlefish/framework\_compatibility\_matrix.xml', needed by 'out/ target/product/vsoc\_x86\_64\_only/gen/ETC/framework\_compatibility\_matrix.device.xml\_intermediates/compatibi lity\_natrix.device.xml', missing and no known rule to make it ninja failed with: exit status

此错误表明设备清单中列出了实例,但在框架兼容性矩阵 (FCM) 中没有指定。FCM 定义了设备支持的 HAL(硬件抽象层)版本。

原因

  • 已弃用 HAL: 已安装的已弃用 HAL 版本过低。
  • 错别字: 设备清单或 FCM 中存在错别字。
  • FCM 缺少新平台 HAL: 对于新平台 HAL,它们未添加到 FCM 中。
  • 设备特定 HAL: 设备特定 HAL 未添加到 DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILE 或 DEVICE_PRODUCT_COMPATIBILITY_MATRIX_FILE 中。

解决方法

1. 更新已弃用的 HAL

确保安装了最新版本的所有已弃用的 HAL。

2. 检查错别字

仔细检查设备清单和 FCM 中是否存在任何错别字,尤其是在 FCM 版本号方面(应大于或等于 8)。

3. 添加新平台 HAL 到 FCM

对于新平台 HAL,将它们添加到 FCM 版本号大于或等于 8 的任何 FCM 中(如果适用)。

4. 添加设备特定 HAL

对于设备特定的 HAL,将它们添加到 DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILE 或 DEVICE_PRODUCT_COMPATIBILITY_MATRIX_FILE 中。

提示

  • 按照 AOSP 文档配置构建环境。
  • 尝试清除构建缓存并重新构建。
  • 加入 AOSP 社区寻求帮助。

常见问题解答

1. 此错误是否与 HIDL 到 AIDL 转换有关?

否,此错误与 HIDL 到 AIDL 转换无关。它专门与设备清单与 FCM 之间不匹配有关。

2. 如何更新已弃用的 HAL?

运行 repo sync 以获取最新版本。然后,运行 build/soong/soong_ui.bash 以重建设备。

3. 如何检查错别字?

使用文本编辑器仔细比较设备清单和 FCM 中的每个条目。

4. 如何添加新平台 HAL 到 FCM?

在 FCM 中查找与 HAL 对应的模块。然后,更新 FCM 以包含 HAL 版本号。

5. 如何添加设备特定 HAL?

在 DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILE 或 DEVICE_PRODUCT_COMPATIBILITY_MATRIX_FILE 中添加一个新条目,包含 HAL 模块名称和版本号。