Android Studio中使用AIDL以及couldn't find import for class问题的处理

在Android Studio下如何创建aidl文件

1、首先你需要在工程module目录下的src下main中新建一个aidl文件夹,操作方式如下:



2、创建后android studio会自动在mian下新建aidl文件夹,并且在aidl文件下自动新增一个与项目同名的包,新建的aidl文件就在这个包下。

如果是别处复制来的aidl文件,就要自己创建相应的文件夹和相应的包,包名需和AndroidManifest.xml中的Package名字一致。总之最后的效果要和下图一样。



3、重新编译若顺利通过了,就会在app/build/generated/source/aidl/debug/下生成了MusicConnect.java,但是我在编译的时候报了下面的错误:



提示MusicConnect.aidl中导入的类MusicData找不到。到MusicConnect.aidl文件中看看,确实导入了MusicData这个类



4、为何提示找不到这个类呢?

参考《Android/OPhone开发完全讲义》第8章里的一段叙述:
“AIDL服务只支持有限的数据类型,因此,如果用AIDL服务传递一些复杂的数据就需要做更一步处理。AIDL服务支持的数据类型如下:

Java的简单类型(int、char、boolean等)。不需要导入(import)。

String和CharSequence。不需要导入(import)。

List和Map。但要注意,List和Map对象的元素类型必须是AIDL服务支持的数据类型。不需要导入(import)。

AIDL自动生成的接口。需要导入(import)。

实现android.os.Parcelable接口的类。需要导入(import)。

其中后两种数据类型需要使用import进行导入,将在本章的后面详细介绍。

传递不需要import的数据类型的值的方式相同。传递一个需要import的数据类型的值(例如,实现android.os.Parcelable接口的类)的步骤略显复杂。除了要建立一个实现android.os.Parcelable接口的类外,还需要为这个类单独建立一个aidl文件,并使用parcelable关键字进行定义。”


看完这段话后,在看看MusicData这个类,他的确是一个实现了android.os.Parcelable接口的类



5、因此我们还要单独建立一个MusicData.aidl文件,并使用parcelable关键字进行定义。并且要将MusicData.aidl文件放在与MusicData.java文件相对应的entity包中,看下图你就明白了。



6、这时就可以重新编译项目,编译之后就会在app/build/generated/source/aidl/debug/下生成了MusicConnect.java

这样就可以在其他的类中调用MusicConnect.java中的方法了。




  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值