Android系统匿名共享内存(Anonymous Shared Memory)C++调用接口分析(7)

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

你可能感兴趣的:(android,memory,anonymous,shared,匿名共享内存,C++调用接口分析)