频道栏目
首页 > 程序开发 > 移动开发 > Android > 正文
android aidl实现跨进程通信
2018-02-12 11:54:15      个评论    来源:king_zh1的博客  
收藏   我要投稿

示例github地址:下载导入后分别运行aidlserver模块和app模块

as version:3.0.1;gradleversion:4.1;gradlepluginversion:3.0.1

AIDL默认支持一些数据类型,在使用这些数据类型的时候是不需要导包的,除了这些类型之外的数据类型,在使用之前必须导包,就算目标文件与当前正在编写的 .aidl 文件在同一个包下。

默认支持的数据类型包括: Java中的八种基本数据类型,包括 byte,short,int,long,float,double,boolean,char;String 类型;CharSequence类型;List类型:List中的所有元素必须是AIDL支持的类型之一,或者是一个其他AIDL生成的接口,或者是定义的parcelable(传递对象时,类要实现pacelable接口,as提供插件可快速生成)。List可以使用泛型;Map类型:Map中的所有元素必须是AIDL支持的类型之一,或者是一个其他AIDL生成的接口,或者是定义的parcelable。Map不支持泛型。

Gradle 在构建项目的时候通过 sourceSets 来配置不同文件的访问路径,Gradle 默认是将 java 代码的访问路径设置在 java 包下的,如果 java 文件是放在 aidl 包下的话是找不到这个 java 文件的。

修改 build.gradle 文件:在 android{} 中间加上下面的内容:

sourceSets {

main {

java.srcDirs = [“src/main/java”,“src/main/aidl”]

}

}

如此做,我们可以把java文件和aidl文件放到同一包下,方便复制到客户端。

创建的aidl文件默认在aidl文件夹下,自动创建包。

服务端创建的文件

\

创建的Book类还要创建与之对应的aidl类Book.aidl,做如下声明:

\

这样才可以在IBookManager.aidl中调用

将aidl文件夹复制到客户端,复制后如图:

\

包名要与服务端一致,创建好aidl文件后要rebuild重新编译一下,可自动生成对应的java文件,如图:

\

在客户端调用服务端时要显示声明:声明包名和Service的路径,5.0之后不支持隐式声明。

\

点击复制链接 与好友分享!回本站首页
上一篇:记录Android8.0的app开发的一个问题
下一篇:Android面向面试:Fragment内容复习
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站