编译Android系统AIDL模块出现couldn't find import for class错误的解决办法

来源:互联网 发布:施坦威立式钢琴 知乎 编辑:程序博客网 时间:2024/05/10 05:51

编译Android系统源码,在framework/ex目录下新建了一个目录单独编译一个模块,里面还有AIDL接口声明,并且声明中用到了

自定义的JAVA类,写入import代码后编译报错couldn't find import for class

然后开始上网找资料,网上找到了两个方案,但都不行,记录一下:

一、自定义的JAVA类没有声明对应的aidl文件,比如定义了一个Test.java类文件,需在同目录下新建一个Test.aidl文件,并且文件中

需要填写如下格式代码:

package com.xxxx.xxxx;
parcelable Test;

这种是最常见的错误,也是最常见的解决办法,但可惜的是我都已经定义了,没用

二、在framework/base/Android.mk中LOCAL_AIDL_INCLUDES += $(FRAMEWORKS_BASE_JAVA_SRC_DIRS)前面添加

LOCAL_AIDL_INCLUDES += $(刚编写的AIDL声明文件的目录)

我同样实验过了也无效,因为我的目录不在base目录下,这种方案就行不通。

还有说修改build/core目录下base_rules.mk, pathmap.mk文件的,修改后也无法解决问题。


到这卡壳了,我就考虑是不是我的Android.mk文件是不是需要修改修改呢?

在我的项目目录下的Android.mk文件中添加LOCAL_AIDL_INCLUDES += $(刚编写的AIDL声明文件的目录)

结果还是无用,在Stackoverflow上看到相关问题,有写LOCAL_AIDL_INCLUDES := $(call all-Iaidl-files-under, java)

或者是LOCAL_SRC_FILES += $(call all-Iaidl-files-under, java)都无用,抱着试试的心里直接将AIDL文件追加到

LOCAL_SRC_FILES,结果报错说声明的AIDL文件不能添加到makefile文件中,好吧,问题到底出在哪里呢?

也许是撞大运吧,LOCAL_AIDL_INCLUDES += $(刚编写的AIDL声明文件的目录)这个目录我给该了下,

之前追加的目录都是具体到AIDL文件的目录中,$(LOCAL_PATH)/java/com/xxxx/xxxx目录,现在我直接改为了

LOCAL_SRC_FILES += $(LOCAL_PATH)/java/,然后编译~!对了,没错了~!

为了确认的确是没错的,我将out目录中生成的临时文件都给删掉,重新编译,也OK~!

好了,具体是为什么这样子我不清楚,有清楚的朋友可以给解释解释。。。

0 0
原创粉丝点击