AOSP编译报错:设备清单实例未在框架兼容性矩阵中声明
解决Stable AIDL HAL编译兼容性矩阵报错问题
问题背景
创建android.hardware.invcase Stable AIDL HAL服务,完成教程步骤后编译报错,提示设备清单中的HAL实例未在框架兼容性矩阵中指定,已添加矩阵XML但问题未解决。
排查与解决方向
关联兼容性矩阵到正确变量
确保你的兼容性矩阵XML文件在设备的BoardConfig.mk或device.mk中被正确关联到DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILE或DEVICE_PRODUCT_COMPATIBILITY_MATRIX_FILE变量,路径必须和实际文件位置完全匹配:DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILE := device/[厂商名]/[设备型号]/framework_compatibility_matrix.xml修正兼容性矩阵版本
报错明确要求FCM版本≥8,你当前XML中version="1.0"不符合要求,需修改为对应Android版本的FCM版本(比如Android 11对应v8,Android 12对应v9):<compatibility-matrix version="8" type="framework">核对字段一致性
检查XML中所有字段是否与HAL定义、设备清单完全一致:name必须严格匹配HAL包名android.hardware.invcase,大小写、拼写不能出错version要对应报错中显示的@1(即版本1)interface下的name(IInvcase)和instance(default)要和设备清单中的声明完全一致
验证设备清单HAL声明
确保设备清单(manifest.xml)中的HAL声明与矩阵配置匹配,示例正确声明:<hal format="aidl"> <name>android.hardware.invcase</name> <version>1</version> <interface> <name>IInvcase</name> <instance>default</instance> </interface> </hal>清理缓存重新编译
执行命令清理编译缓存,避免旧配置残留:make clean m -j$(nproc)
提供的兼容性矩阵XML
<?xml version="1.0" encoding="UTF-8"?> <!-- Comments, Legal notices, etc. here --> <compatibility-matrix version="1.0" type="framework"> <hal format="aidl" optional="true"> <name>android.hardware.invcase</name> <version>1</version> <interface> <name>IInvcase</name> <instance>default</instance> </interface> </hal> </compatibility-matrix>
完整报错信息
ERROR: files are incompatible: The following instances are in the device manifest but not specified in framework compatibility matrix: android.hardware.invcase.IInvcase/default (@1) Suggested fix: 1. Update deprecated HALs to the latest version. 2. Check for any typos in device manifest or framework compatibility matrices with FCM version >= 8. 3. For new platform HALs, add them to any framework compatibility matrix with FCM version >= 8 where applicable. 4. For device-specific HALs, add to DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILE or DEVICE_PRODUCT_COMPATIBILITY_MATRIX_FILE.: Success INCOMPATIBLE 19:44:38 ninja failed with: exit status 1 #### failed to build some targets (19 seconds) ####
内容的提问来源于stack exchange,提问作者Sandy
相关产品推荐
相关产品推荐

