You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AOSP中如何在Native代码中引入AIDL生成的头文件?

问题:Native模块引用AIDL生成头文件失败

我的/devices目录下有一个Native模块,结构如下:

- module
-- aidl
--- com
---- my
----- package
------ IMyInterface.aidl
-- Android.mk
-- Proxy.h
-- Proxy.cpp

我希望在该模块中使用Binder,当前的Android.mk配置如下:

LOCAL_PATH := $(call my-dir)

$(call emugl-begin-shared-library,libMyModule)

LOCAL_AIDL_INCLUDES := $(LOCAL_PATH)/aidl

LOCAL_SRC_FILES := \
    aidl/com/my/package/IMyInterface.aidl \
    Proxy.cpp 

LOCAL_HEADER_LIBRARIES := libbinder_headers \
                          libhidlbase_impl_internal \
                          libbase

LOCAL_SHARED_LIBRARIES :=       \
        libbinder               \
        libutils                \
        liblog                  \
        libcutils

$(call emugl-export,C_INCLUDES,$(LOCAL_PATH))
$(call emugl-import,libOpenglCodecCommon$(GOLDFISH_OPENGL_LIB_SUFFIX))

$(call emugl-end-module)

编译时会生成C++头文件,但这些文件仅存在于中间目录:

$ ls out/target/product/emulator_x86_64/obj/SHARED_LIBRARIES/libMyModule_intermediates/aidl-generated/include/com/my/package:

BnMyInterface.h  BpMyInterface.h  IMyInterface.h

直接在Proxy.cpp中添加#include "IMyInterface.h"时,编译系统报错:fatal error: 'IMyInterface.h' file not found,请问该如何正确引入这些头文件?


解决方案

1. 调整头文件引用路径并补充编译包含目录

步骤1:修改Proxy.cpp中的include语句

生成的头文件位于com/my/package子目录下,需要使用完整的相对路径引用:

#include "com/my/package/IMyInterface.h"

步骤2:在Android.mk中添加AIDL生成目录到编译路径

将AIDL生成的头文件根目录添加到编译系统的包含路径中,在Android.mk里新增以下配置:

# 把AIDL生成的include目录加入编译路径
LOCAL_C_INCLUDES += $(call local-generated-sources-dir)/aidl-generated/include

或者利用emugl-export指令来添加:

$(call emugl-export,C_INCLUDES,$(call local-generated-sources-dir)/aidl-generated/include)

添加后,编译系统就能通过你修改的路径找到对应的头文件。

2. 可选:供其他模块引用的配置(若有需求)

如果后续有其他模块需要引用这些AIDL生成的头文件,可以在Android.mk中添加导出配置:

LOCAL_EXPORT_C_INCLUDES := $(call local-generated-sources-dir)/aidl-generated/include

当前场景下,仅解决自身模块引用问题的话,第一种方案已足够。


内容的提问来源于stack exchange,提问作者artem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 20:25:23