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",