文章首发微信公众号:QDROID88888,如果感兴趣可以关注一下公众号。
一、安卓源码中aidl文件介绍
在 Android系统源码中经常看到很多.aidl后缀的文件。这些aidl文件主要是binder进程间通信的接口描述语言。在源码编译的时候才好会通过工具成基于该 .aidl 文件的 IBinder 接口,并最终打包到系统的jar包中。所以在源码中搜索不到具体的java实现代码。为了查看aidl文件的java实现代码,可以有如下两种方式:
(1) 通过手机设备提取系统jar包。目前高版本的安卓系统中直接提取jar包是获取不到具体的实现代码。由于安卓系统编译发布的时候开启了编译优化,会将dex转为oat文件。所以提取设备的时候就需要提取jar包对应的oat文件,并用专门的工具将oat转化为dex文件。然后反编译工具查看。
(2) 在源码中编译userdebug、eng版本的系统
编译版本userdebug、eng版本情况下,jar包中包含了完整的dex文件,可以使用反编译工具查看。
以下以lineageOs 安卓10系统源码编译环境,查看ILocationManager.aidl文件的实现代码为例说明。
二、jadx查看aidl文件java实现代码
(1)、安卓源码中编译一次usedebug版的系统
(2)、在源码编译输出目录找到framework.jar
ILocationManager.aidl编译之后会打包到framework.jar中。安卓源码中ILocationManager.aidl</