将aidl文件添加到Android.mk

时间:2012-12-05 09:54:54

标签: android aidl

我正在为我的项目添加一个aidl文件,以应对我在调用intent.getIntExtra(..)时遇到的“ClassNotFound”异常,(因为同一意图附加内容中的另一个可分配对象)< / p>

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

package com.someapp;
parcelable SomeInfo;

我添加到Android.mk:

LOCAL_AIDL_INCLUDES := src/com/someapp/SomeInfo.aidl

但是当我正在构建项目时,我认为没有区别。 实际上,如果我添加到我的代码

import com.someapp.SomInfo;

编译器无法找到它......

请帮忙

1 个答案:

答案 0 :(得分:4)

您还需要将其添加到LOCAL_SRC_FILES,例如:

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文件的规则的一个:http://androidxref.com/4.4.3_r1.1/xref/build/core/base_rules.mk#178。它将自动选择具有aidl扩展名的所有文件,如下所示:

aidl_sources := $(filter %.aidl,$(LOCAL_SRC_FILES))

您将aidl文件添加到的LOCAL_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))