环境:Android Studio 4.1.3 ,API28,使用as自带 模拟器Nexus 6
- 创建服务端项目,包名下右键-新建-aidl,命名随意,以下以我的demo为例。命名为IStudent.aidl,会自动生成一个跟java下面的包名一致的aidl的包,点击锤子,构建一下,让他生成一个同名的.java文件。
- 在aidl中自定义接口提供给服务端调用,例如,setName()
- java包下新建service,manifest设置service的action为“com.test.server”,你随意就好,只需要跟客户端设置的一致就行,然后onBind返回IStudent.Stub的对象。
服务端结构如下图
service如图
- 新建一个项目作为客户端,拷一下整个服务端的aidl包,拷完记得build一下
客户端结构如图
MainActivity代码如图
connection代码如图
至此,完结。先运行服务端,再运行客户端,点击tv,回到服务端就能看到客户端刚刚设置的值。如下图。
记录这篇文章的原因是:最开始写好了代码之后运行,点击,就崩溃,一直提示服务连接不上,为空,最开始用的,Pixel XL API30,sdk版本也是30的,后面换成Nexus 6 API28 模拟器,并且API版本也换成28的,就行了,不知道为啥。