将aidl文件添加到Android.mk

将aidl文件添加到Android.mk,android,aidl,Android,Aidl,我正在向我的项目添加一个aidl文件,以处理调用intent.getIntExtra(..)时遇到的“ClassNotFound”异常(因为同一个intent extras中有另一个可包裹对象) 我添加了以下.aidl文件(SomeInfo.aidl) 我在Android.mk中添加了: LOCAL_AIDL_INCLUDES := src/com/someapp/SomeInfo.aidl 但当我在建设这个项目时,我看不出有什么不同。 实际上,如果我添加到我的代码中 import com.s

我正在向我的项目添加一个aidl文件,以处理调用intent.getIntExtra(..)时遇到的“ClassNotFound”异常(因为同一个intent extras中有另一个可包裹对象)

我添加了以下.aidl文件(SomeInfo.aidl)

我在Android.mk中添加了:

LOCAL_AIDL_INCLUDES := src/com/someapp/SomeInfo.aidl
但当我在建设这个项目时,我看不出有什么不同。 实际上,如果我添加到我的代码中

import com.someapp.SomInfo;
编译器找不到它


请帮助

您还需要将其添加到本地\u SRC\u文件中,如:

LOCAL_SRC_FILES := $(call all-java-files-under, src) src/com/someapp/SomeInfo.aidl
LOCAL_AIDL_INCLUDES := src/com/someapp/SomeInfo.aidl
也可以使用预定义的函数,如:

LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-Iaidl-files-under, src)
LOCAL_AIDL_INCLUDES := $(call all-Iaidl-files-under, src)
让我补充更多细节。实际上,base_rules.mk定义了处理aidl文件的规则:。它将自动拾取所有具有aidl扩展名的文件,如下所示:

aidl_sources := $(filter %.aidl,$(LOCAL_SRC_FILES))
您要将AIDL文件添加到的本地_AIDL_INCLUDES列表实际上被定义为AIDL编译器的-I*param:

$(aidl_java_sources): PRIVATE_AIDL_FLAGS := -b $(addprefix -p,$(aidl_preprocess_import)) -I$(LOCAL_PATH) -I$(LOCAL_PATH)/src $(addprefix -I,$(LOCAL_AIDL_INCLUDES))

如果我在库中定义的*.aidl文件不在当前本地路径中,就像../LibraryProject/aidl一样,该如何修复?我从来没有听说过
Android.mk
base_rules.mk
。。。但是我想将我的可包裹对象的
.aidl
文件放在我的库模块中,而不是客户端应用程序中。。。您可以添加一个完整的文件示例,以及我必须在哪里添加这些文件才能使其正常工作吗?我必须在任何地方注册吗?@codezjx。此“all Iaidl files under”函数返回的路径相对于$(LOCAL_path)。您可以直接从根项目指定库路径。也就是说,本地AIDL包括:=图书馆项目/AIDL
$(aidl_java_sources): PRIVATE_AIDL_FLAGS := -b $(addprefix -p,$(aidl_preprocess_import)) -I$(LOCAL_PATH) -I$(LOCAL_PATH)/src $(addprefix -I,$(LOCAL_AIDL_INCLUDES))