AOSP 构建错误:如何解决设备清单与框架兼容性矩阵不匹配问题?
2024-03-11 20:03:58
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 模块名称和版本号。