现在百度一下 AIDL/跨进程 Service, 文章一大堆, 然而都是千篇一律, 存在很多同样模棱两可的坑, 而且没有AndroidStudio的最终目录树, 做起来还是有各种各样的不顺.
先说一下几个网上模棱两可的问题:
- 客户端和服务端不用必须两个apk;
- AndroidManifest 声明的 service 的 process 不用必须写
:remote
, 这里是写进程的名字, 可以写任意字符; - java.lang.SecurityException: Binder invocation to an incorrect interface 错误不一定是因为客户端和服务端的包名不一致导致的, 有可能是实例化AIDL接口的时候不是实现的
XXX.Stub
源码放在了github: https://github.com/YouCii/LearnApp
下面说下基本的实现流程
AIDL最简单实现流程
先写服务端
-
新建AIDL文件
新建完成后会在src/main下生成aidl目录, 修改生成的aidl文件, 写入自己的接口方法
-
编译程序, AS 会在 build 目录中自动生成 a