第7课第2节_Binder系统_c++实现_编译测试

第7课第2节_Binder系统_c++实现_编译测试

设置执行环境:

.setenv
lunch
23(.full_tiny4412-eng)
进入到代码所在目录执行
mmm .

第7课第2节_Binder系统_c++实现_编译测试

第7课第2节_Binder系统_c++实现_编译测试

七. Binder系统之服务的c++实现
1. 编写代码
参考文件:
frameworksavincludemediaIMediaPlayerService.h (IMediaPlayerService,BnMediaPlayerService)
frameworksavmedialibmediaIMediaPlayerService.cpp (BpMediaPlayerService)
frameworksavmedialibmediaplayerserviceMediaPlayerService.h
frameworksavmedialibmediaplayerserviceMediaPlayerService.cpp
frameworksavmediamediaserverMain_mediaserver.cpp (server, addService)


第一次:
git clone https://github.com/weidongshan/APP_0004_Binder_CPP_App.git

更新:
git pull origin

取出指定版本:
git checkout v1 // 初始版本, 未调试

2. 编译测试

参考frameworksavmediamediaserverAndroid.mk

编译:
a. 文件放入frameworks/testing/APP_0004_Binder_CPP_App
b. cd /work/android-5.0.2/
. setenv
lunch //选择23. full_tiny4412-eng
c. cd frameworks/testing/APP_0004_Binder_CPP_App
mmm .

第7课第2节_Binder系统_c++实现_编译测试


测试:
a. 重新编译内核让它支持NFS
make menuconfig
<*> NFS client support | |
[*] NFS client support for NFS version 3 | |
[*] NFS client support for the NFSv3 ACL protocol extension | |
[*] NFS client support for NFS version 4 | |
[*] NFS client support for NFSv4.1 (EXPERIMENTAL)

make zImage, 并使用新的zImage启动单板

b. mount nfs
su
ifconfig eth0 192.168.1.100
busybox mount -t nfs -o nolock,vers=2 192.168.1.123:/work/nfs_root /mnt   (在Android系统中不支持mount,必须使用busybox mount)

c. 执行 test_server, test_client

./test_server &
logcat HelloService:* *:S &
./test_client hello
./test_client hello weidongshan

 程序运行执行的结果:

第7课第2节_Binder系统_c++实现_编译测试

第7课第2节_Binder系统_c++实现_编译测试

 第7课第2节_Binder系统_c++实现_编译测试

注意如果使用的是上一节的内核,即修改了binder.c的,含有打印信息的。应恢复为原来的,否则启动非常慢。

第7课第2节_Binder系统_c++实现_编译测试

 第7课第2节_Binder系统_c++实现_编译测试

执行c语言编写的代码

首先修改makefile 编译为静态连接

第7课第2节_Binder系统_c++实现_编译测试

 makeflie:

 第7课第2节_Binder系统_c++实现_编译测试

第7课第2节_Binder系统_c++实现_编译测试

 现在使用c++实现的test_server和c语言实现的test_client之间可以互相通信

 第7课第2节_Binder系统_c++实现_编译测试

 现在使用c语言实现的test_server和c++语言实现的test_client之间可以互相通信

第7课第2节_Binder系统_c++实现_编译测试