你的位置:首页 > 操作系统

[操作系统]AIDL使用中报错找不到自定义数据类型的解决办法


在研究Android多进程编程的时候,照书敲了一个AIDL的例子。其中,用Android Studio自动生成了AIDL文件,会放进aidl文件夹,其中使用到了一个自定义数据类型,于是在aidl文件夹下会有3个文件,如下图所示。

IBookManager中定义服务器提供的接口,其中用到了自定义数据类型Book,除了要用java实现Book类(必须implement parcelable)外,还要添加同名的Book.aidl文件,里面有两句代码。

package *.aidl;
parcelable Book;

一切就绪,开始编译运行。

会报错,客户端import这个book类的时候,说找不到数据类型。

这是因为Gradle脚本中默认的java src文件夹,是不包括aidl的。所以,把aidl文件夹放入到java src中就行了。

在Gradle编译脚本中加入

sourceSets{
main{
java.srcDirs = ['src/main/java','src/main/aidl']
}
}

再运行,完美。