编译Android系统AIDL模块出现couldn't find import for class错误的解决办法
2016-07-13 08:35
489 查看
编译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~!
好了,具体是为什么这样子我不清楚,有清楚的朋友可以给解释解释。。。
自定义的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~!
好了,具体是为什么这样子我不清楚,有清楚的朋友可以给解释解释。。。
相关文章推荐
- Android模拟器使用说明
- android 自动拨打电话 挂断电话代码
- Android淘宝好评星级进度条RatingBar原来可以这么玩
- 跟我学Android之十三 SQLite数据库操作
- 跟我学Android之十三 SQLite数据库操作
- 跟我学Android之十三 SQLite数据库操作
- Android Studio自定义模板:简单自定义DeviceAdminReceiver模板
- Android热修复之AndFix
- Android Studio .so 文件提交
- 在android中使用OrmLite数据库框架
- 文章标题
- 关于开发个简单应用(账号管家)的总结
- Android-SDK-NDK-Tool-Gradle
- Android中Context详解 ---- 你所不知道的Context
- 实例解读AndroidManifest.xml
- Retrofit项目封装使用
- 自定义无内存泄漏的Handler内部类
- Android基础之LaunchMode
- Android Activity管理机制详解
- Android自定义View实现竖直跑马灯效果案例解析