5

Android10.0 Binder通信原理(七)-Framework binder示例

 1 year ago
source link: https://blog.csdn.net/yiranfeng/article/details/105313042
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

摘要:本节主要来讲解Android10.0 Binder在Framework中的示例

阅读本文大约需要花费15分钟。

文章首发微信公众号:IngresGe

专注于Android系统级源码分析,Android的平台设计,欢迎关注我,谢谢!

欢迎关注我的公众号!

20200113052246361.jpg

[Android取经之路] 的源码都基于Android-Q(10.0) 进行分析

[Android取经之路] 系列文章:

《系统启动篇》

《日志系统篇》

《Binder通信原理》

  《HwBinder通信原理》

《编译原理》

1.Demo示例说明

Server进程目录结构:

Server
├─src
│  └─com
│       └─android
│               └─server
│                   ├─Server.java
│                   ├─MyService.java
│                   └─IMyService.java
├─Android.mk
└─serverTest

Client进程目录结构:

Client
├─src
│  └─com
│       └─android
│               └─client
│                   ├─Client.java
│                   ├─MyServiceProxy.java
│                   └─IMyService.java
├─Android.mk
└─clientTest

2. Demo 创建

2.1 Server端创建服务,提供接口

文件说明:

文件

说明

Server.java

Server入口

MyService.java

IMyService.java

Android.mk

serverTest

可执行程序,保存在/system/bin中,

用来运行JAVA进程

[Server.java] 服务入口

[MyService.java] 服务实体

[IMyService.java] 接口

[Android.mk] 编译文件

[serverTest] 可执行文件,最终会拷贝到/system/bin中

2.2 Client端获取服务,数据通信

文件说明:

文件

说明

Client.java

Client入口

MyServiceProxy.java

IMyService.java

Android.mk

clientTest

可执行程序,保存在/system/bin中,

用来运行JAVA进程

[Client.java]  Client 入口

[MyServiceProxy.java] 服务代理

[Android.mk] 编译文件

[clientTest] 可执行程序

3. 编译验证

3.1编译方式:

  1. 把上述代码文件夹push到 /frameworks/base/cmds/ 中
  2. source build.sh xxx                   #注:xxx为编译项目名
  3. cd /frameworks/base/cmds/
  4. mmm server
  5. mmm client


3.2结果验证:

  1. adb push ..../out/target/..../system/framework/serverTest.jar /system/framework
  2. adb push ..../out/target/..../system/framework/clientTest.jar /system/framework
  3. adb push ..../out/target/..../system/bin/serverTest. /system/bin
  4. adb push ..../out/target/..../system/bin/clientTest. /system/bin
  5. 开启两个cmd终端,执行adb shell
  6.  server端执行:/system/bin/serverTest

      20200404171423366.jpg

     7.Client端执行:/system.bin/clientTest 

      20200404171453199.jpg

运行结果:

Client:

20200404171522133.jpg

Server:

20200404171543600.jpg

我的微信公众号:IngresGe

20200113052246361.jpg

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK