BinderSample
Android Binder Demo示例程序,分别从Android应用层(Java)、framework层(Java)、native层(C++)3个角度,通过example阐述如何创建和使用Android Binder IPC实例
Install / Use
/learn @yuanhuihui/BinderSampleREADME
BinderSample
Binder sample程序,分为app, framework, native三大类,每一类生成的可执行文件都位于/Output文件夹相应的子文件下。
|示例程序|说明| |---|---| |NativeBinderDemo|从Native角度编写的Binder Demo程序| |FrameworkBinderDemo|从framework角度编写的Binder Demo程序| |AppBinderDemo|从Apk角度编写的Binder Demo程序|
一、 Native Binder
1.1 源码结构
- ClientDemo.cpp: 客户端程序
- ServerDemo.cpp:服务端程序
- IMyService.h:自定义的MyService服务的头文件
- IMyService.cpp:自定义的MyService服务
- Android.mk:源码build文件
1.2 分层图

1.3 运行
首先将这两个ServerDemo,ClientDemo可执行文件push到手机
adb push ServerDemo /system/bin
adb push ClientDemo /system/bin
上面的2个文件,是由/nativeBinderDemo/路径下的代码生成的,生成的文件已经放到/Output/nativeBinderDemo/目录下。如果push不成功,那么先执行adb remount,再执行上面的指令;如果还不成功,可能就是权限不够。如果上述开启成功,通过开启两个窗口运行(一个运行client端,另一个运行server端)
服务端运行结果:

客户端运行结果:

二、 Framework Binder
2.1 源码结构
Server端
- ServerDemo.java:可执行程序
- IMyService.java: 定义IMyService接口
- MyService.java:定义MyService
Client端
- ClientDemo.java:可执行程序
- IMyService.java: 与Server端完全一致
- MyServiceProxy.java:定义MyServiceProxy
2.2 分层图

2.3 运行
首先将ServerDemo,ClientDemo可执行文件,以及ServerDemo.jar,ClientDemo.jar都push到手机。
adb push ServerDemo /system/bin
adb push ClientDemo /system/bin
adb push ServerDemo.jar /system/framework
adb push ClientDemo.jar /system/framework
上面的4个文件,是由/FrameworkBinderDemo/路径下的代码生成的,生成的文件已经放到/Output/frameworkBinderDemo/目录下。
服务端运行结果:

客户端运行结果:

三、 Apk Binder
3.1 源码结构
- ClientActivity.java 本地客户端
- RemoteService.java 远程服务端
- IRemoteService.aidl
- MyData.java 用于传递复杂的Parcelable数据
- MyData.aidl
3.2 分层图

3.3 运行
由/AppBinderDemo/路径下的代码生成的Apk,已经放到/Output/appBinderDemo/BinderDemo.apk。
将apk安装到手机,打开apk界面如下:

界面上有三个按钮,分别是功能分别是bindService(绑定Service), unbindService(解除绑定Service), killProcess(杀死Service进程)。
从左往右,依次点击界面,可得:

更多关于Binder示例程序的说明,请查看文章
Related Skills
node-connect
349.9kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
109.8kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
349.9kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
349.9kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
