Android14之HIDL报错: No more HIDL interfaces can be added to Android. Please use AIDL.(一百九十五)
简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!
优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀
优质专栏:多媒体系统工程师系列【原创干货持续更新中……】🚀
人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.
更多原创,欢迎关注:Android系统攻城狮1.前言
本篇目的:Android14添加HIDL接口报错: No more HIDL interfaces can be added to Android. Please use AIDL.
2.报错信息
- FAILED: out/soong/bp2build_files_marker
cd “KaTeX parse error: Expected 'EOF', got '&' at position 49: …soong_build")" &̲& BUILDER="PWD/KaTeX parse error: Expected 'EOF', got '&' at position 50: …soong_build")" &̲& cd / && env -…BUILDER” --top “$TOP” --soong_out “out/soong” --out “out” --bp2build_marke
- r out/soong/bp2build_files_marker --globListDir bp2build_files --globFile out/soong/globs-bp2build_files.ninja -t -l - - out/.module_paths/Android.bp.list --available_env out/soong/soong.environment.available --used_env out/soong/soong
- .environment.used.bp2build_files Android.bp
error: hardware/interfaces/led/1.0/Android.bp:4:9: module “android.hardware.xxx@1.0_interface”: name: No more HIDL interfaces can be added to Android. Please use AIDL.
- 17:51:09 soong bootstrap failed with: exit status 1
- failed to build some targets (4 seconds) ####
3.Android HIDL接口介绍
- HIDL(Hardware Interface Definition Language)是Android系统中用于定义硬件接口的一种语言。它是一种基于IDL(Interface Definition Language)的语言,用于描述硬件模块的接口,使得不同的硬件模块能够通过接口进行通信。HIDL的出现,主要是为了解决硬件模块之间通信的兼容性和效率问题。
- HIDL通过定义硬件模块的接口,将硬件实现细节抽象出来,使得硬件模块之间的通信不再直接依赖具体的硬件实现,而是通过接口进行。这样,硬件模块的开发和维护变得更加独立和简单,同时也提高了硬件模块的可移植性和可复用性。
- HIDL的编译过程是将HIDL源文件编译成Java源文件,这些Java源文件可以被Android系统中的服务使用。这些服务通过Java代码实现硬件模块之间的通信,从而实现硬件模块的功能。
- HIDL的优点在于,它提供了一种标准化的硬件接口定义方式,使得硬件模块之间的通信变得更加简单和高效。同时,HIDL也提高了硬件模块的可移植性和可复用性,使得硬件开发变得更加灵活和便捷。
- 在Android系统中,HIDL主要用于定义和实现硬件模块之间的接口,例如音频、摄像头、传感器等。通过使用HIDL,Android系统能够更好地管理和控制各种硬件模块,提高了系统的稳定性和性能。
4.报错原因
从Android 10开始,HIDL 已废弃,Android 将在所有位置改用AIDL。
所以,Android10以后版本使用AIDL接口即可。
5.官方说明
6.第二种解决方案(直接开倒车)
# emacs system/tools/hidl/build/hidl_interface.go
func hidlInterfaceMutator(mctx android.LoadHookContext, i *hidlInterface) { + // if !canInterfaceExist(i.ModuleBase.Name()) { + // mctx.PropertyErrorf("name", "No more HIDL interfaces can be added to Android. Please use AIDL.") + // return + // } ..... };
删除以上代码可以解除Android10以后无法添加HIDL的限制.