android源码:aidl调试

本文详细解释了Android源码中AIDL文件的编译路径、不同情况下的编译规则(如java和cpp),以及Android.bp配置对AIDL接口生成的影响,涉及进程间通信模板和perfettotracing的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

android源码:aidl调试

1,aidl命令路径

android源码/system/tools/aidl
android源码/system/tools/hidl

android源码/system/tools$ ls 
aidl  hidl  mkbootimg  release_tools  sysprop  xsdc

android源码全编译后aidl命令路径:
out/host/linux-x86/bin/aidl


aidl文件编译成java或cpp后所在的路径:
out/soong/.intermediates

2,例子:

举例:ICameraServiceListener.aidl编译成cpp后的路径:
frameworks/av/camera/aidl/android/hardware/ICameraServiceListener.aidl
编译成cpp后的文件有:IXXX.aidl ==> IXXX.cpp IXXX.h BnXXX.h, BpXXX.h
out/soong/.intermediates/frameworks/av/camera$ find ./ -name *CameraServiceListener*
./libcamera_client/android_arm_armv8-a_shared/gen/aidl/android/hardware/BnCameraServiceListener.h
./libcamera_client/android_arm_armv8-a_shared/gen/aidl/android/hardware/ICameraServiceListener.cpp
./libcamera_client/android_arm_armv8-a_shared/gen/aidl/android/hardware/ICameraServiceListener.h
./libcamera_client/android_arm_armv8-a_shared/gen/aidl/android/hardware/BpCameraServiceListener.h

Android源码编译时,out/soong/.intermediates没有ICameraServiceListener.aidl编译成java的临时文件,想看的话,可以手动编译。
android_soucres$ ./out/host/linux-x86/bin/aidl --lang=java -t -I  ./frameworks/base/core/java/ -p ./prebuilts/sdk/current/public/framework.aidl ./frameworks/av/camera/aidl/android/hardware/ICameraServiceListener.aidl -o ~/1_work_home/test_app/aidl/

ICameraService.aidl编译成java的文件
android_soucres$ ./out/host/linux-x86/bin/aidl --lang=java -t -I  ./frameworks/base/core/java/ -I ./frameworks/av/camera/aidl/ -p ./prebuilts/sdk/current/public/framework.aidl ./frameworks/av/camera/aidl/android/hardware/ICameraService.aidl -o ~/1_work_home/test_app/aidl/

3,为什么有的ICameraServiceListener.aidl没有编译生成java的临时文件?
原因是:在Android.bp里aidl没有配置export_aidl_headers: true

为什么ICameraServiceListener.aidl没有编译生成java的临时文件?
libcamera_client_aidl分别被frameworks/base/Android.bp和frameworks/av/camera/Android.bp使用。
一个用于把aidl编译为java文件,一个用于把aidl文件编译成cpp文件。

frameworks/av/camera/Android.bp
// AIDL interface between camera clients and the camera service.
filegroup {
   
    name: "libcamera_client_aidl",  // 分别被frameworks/base/Android.bp和frameworks/av/camera/Android.bp使用。
    srcs: [
        "aidl/android/hardware/ICameraService.aidl",
        "aidl/android/hardware/ICameraServiceListener.aidl",
        "aidl/android/hardware/ICameraServiceProxy.aidl",
        "aidl/android/hardware/camera2/ICameraDeviceCallbacks.aidl",
        "aidl/android/hardware/camera2/ICameraDeviceUser.aidl",
        "aidl/android/hardware/camera2/ICameraOfflineSession.aidl",
        
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值