Android系统匿名共享内存(Anonymous Shared Memory)C++调用接口分析(7)-阿里云开发者社区

开发者社区> 余二五> 正文

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就分析完成了。




本文转自 Luoshengyang 51CTO博客,原文链接:http://blog.51cto.com/shyluo/966926,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Android 多个APK共享数据(Shared User ID)
Android给每个APK进程分配一个单独的用户空间,其manifest中的userid就是对应一个Linux 用户 (Android 系统是基于Linux)的. 所以不同APK(用户)间互相访问数据默认是禁止的.
637 0
面试4 你在什么情况下会用到虚方法?它与接口有什么不同
子类重新定义父类的某一个方法时,必须把父类的方法定义为virtual 在定义接口中不能够有方法体,虚方法可以有 实现时,子类可以不用重新定义虚方法,但如果一个类继承接口,那就必须实现这个接口博客内容仅代表个人观点,如发现阐述有误,麻烦指正,谢谢!
579 0
如何在Android上快速集成微信和QQ的分享(Share)能力?
目前微信和QQ已经成为App分享的主要平台,大部分开发者都会首选集成这两个平台,除了可以选择直接继承官方的的SDK外,目前市面上有不少第三方的集成商,帮助开发者打包好了一键分享的SDK能力,如:极光,友盟+,Mobtech等,这里主要以友盟+集成为例,快速实现在Android上集成两个平台的分享能力。
75 0
android GifView分享
<p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; font-family:Arial; font-size:14px; line-height:26px"> gif图动画在android中还是比较常用的,比如像新浪微博中,有很多gif图片,而且展示非常好,所以我也想弄一个。经
1200 0
Android:随笔——新的 NDK/JNI 调用方式
转载请标明地址 QuincySx: http://www.jianshu.com/p/c6108131ba0f 众所周知现在 Android 开发已经到了 Android Studio 的时代,那么 JNI 的调用方式也经过了好几代 在eclipse 时代就存在的 ndk-build 方式 使用 Google 官方的 com.
1122 0
用C++如何实现开放API接口服务器
比如新浪微博的API服务器。接口是使用HTTP请求。服务器端如何实现一个HTTP SERVER呢?使用libcurl可以吗?   c++的话,一般用libevent或则libev这种库来实现吧。
1118 0
+关注
20382
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载