最近学习aidl,在as上遇到了问题,老是出现问题,这里总结一下aidl的用法。
因为例子中需要使用自定义类型作为传入参数,所以这篇文章基于此背景写的。
step one:
在你的src/main目录下新建一个aidl的文件夹,然后在aidl文件夹中新建一个包,注意,这的包名要完全等同于androidMainfest里面的包名,然后我们在其中初始化我们自定义的类型(Book),Book.aidl是Book类在AIDL中的生命,IBookManager是我们定义的一个接口。
结构如下:
step two:
我们需要在gradle里面添加如下的语句:
sourceSets {
main {
manifest.srcFile 'src/main/AndroidManifest.xml'
java.srcDirs = ['src/main/java', 'src/main/aidl']
resources.srcDirs = ['src/main/java', 'src/main/aidl']
aidl.srcDirs = ['src/main/aidl']
res.srcDirs = ['src/main/res']
assets.srcDirs = ['src/main/assets']
}
}
因为aidl文件我们初始化后,如果没有告诉as自定类型在哪里,它自己根本找不到,(这个白痴,让我弄了好久,吐槽一下)。
step three:
重新Build一下project就可以了,就有相关的信息出现在bulid/generated/source/aidl/debug里面了
如下:
最后生成的效果如下:
/*
* This file is auto-generated. DO NOT MODIFY.
* Original file: /Users/linchen/Desktop/MyApplication/app/src/main/aidl/com/mytest/adiltest/BookManager.aidl
*/
package com.mytest.adiltest;
public interface BookManager extends android.os.IInterface {
/**
* Local-side IPC implementation stub class.