同样,我们需要为这个Client端应用程序编译一个编译脚本,在external/ashmem/client目录下,新建一个Android.mk文件,它的内容如下所示:
-
LOCAL_PATH := $(call my-dir)
-
-
include $(CLEAR_VARS)
-
-
LOCAL_MODULE_TAGS := optional
-
-
LOCAL_SRC_FILES := ../common/ISharedBuffer.cpp \
-
SharedBufferClient.cpp
-
-
LOCAL_SHARED_LIBRARIES:= libcutils libutils libbinder
-
-
LOCAL_MODULE := SharedBufferClient
-
-
include $(BUILD_EXECUTABLE)
源代码都准备好了之后,就可以对Server端和Client端应用程序进行编译了。关于如何单独编译Android源代码工程中的模块,以及如何打包system.img,请参考
如何单独编译Android源代码中的模块
一文。
执行以下命令进行编译和打包:
-
USER-NAME@MACHINE-NAME:~/Android$ mmm external/ashmem/server
-
USER-NAME@MACHINE-NAME:~/Android$ mmm external/ashmem/client
-
USER-NAME@MACHINE-NAME:~/Android$ make snod
这样,打包好的Android系统镜像文件system.img就包含我们前面创建的Server端应用程序SharedBufferServer和Client端应用程序SharedBufferClient了。
至此,我们就可以运行模拟器来验证我们的程序了。关于如何在Android源代码工程中运行模拟器,请参考 在Ubuntu上下载、编译和安装Android最新源代码 一文。
执行以下命令启动模拟器:
至此,我们就可以运行模拟器来验证我们的程序了。关于如何在Android源代码工程中运行模拟器,请参考 在Ubuntu上下载、编译和安装Android最新源代码 一文。
执行以下命令启动模拟器:
-
USER-NAME@MACHINE-NAME:~/Android$ emulator
模拟器运行起来后,就可以通过adb shell命令连上它:
-
USER-NAME@MACHINE-NAME:~/Android$ adb shell
最后,进入到/system/bin/目录下:
-
luo@ubuntu-11-04:~/Android$ adb shell
-
root@android:/ # cd system/bin
进入到/system/bin/目录后,首先在后台中运行Server端应用程序SharedBufferServer:
-
root@android:/system/bin # ./SharedBufferServer &
然后再在前台中重复运行Client端应用程序SharedBufferClient,以便验证程序的正确性:
-
root@android:/system/bin # ./SharedBufferClient
-
The value of the shared buffer is 0.
-
Add value 1 to the shared buffer.
-
root@android:/system/bin # ./SharedBufferClient
-
The value of the shared buffer is 1.
-
Add value 1 to the shared buffer.
-
root@android:/system/bin # ./SharedBufferClient
-
The value of the shared buffer is 2.
-
Add value 1 to the shared buffer.
-
root@android:/system/bin # ./SharedBufferClient
-
The value of the shared buffer is 3.
-
Add value 1 to the shared buffer.
如果我们看到这样的输出,就说明我们成功地在Server端应用程序SharedBufferServer和Client端应用程序SharedBufferClietn共享内存中的数据了。
至此,Android系统匿名共享内存的C++调用接口MemoryHeapBase和MemoryBase就分析完成了。
本文转自 Luoshengyang 51CTO博客,原文链接:http://blog.51cto.com/shyluo/966926,如需转载请自行联系原作者