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,如需转载请自行联系原作者
目录
相关文章
|
4月前
|
安全 C语言 C++
比较C++的内存分配与管理方式new/delete与C语言中的malloc/realloc/calloc/free。
在实用性方面,C++的内存管理方式提供了面向对象的特性,它是处理构造和析构、需要类型安全和异常处理的首选方案。而C语言的内存管理函数适用于简单的内存分配,例如分配原始内存块或复杂性较低的数据结构,没有构造和析构的要求。当从C迁移到C++,或在C++中使用C代码时,了解两种内存管理方式的差异非常重要。
154 26
|
6月前
|
缓存 编解码 Android开发
Android内存优化之图片优化
本文主要探讨Android开发中的图片优化问题,包括图片优化的重要性、OOM错误的成因及解决方法、Android支持的图片格式及其特点。同时介绍了图片储存优化的三种方式:尺寸优化、质量压缩和内存重用,并详细讲解了相关的实现方法与属性。此外,还分析了图片加载优化策略,如异步加载、缓存机制、懒加载等,并结合多级缓存流程提升性能。最后对比了几大主流图片加载框架(Universal ImageLoader、Picasso、Glide、Fresco)的特点与适用场景,重点推荐Fresco在处理大图、动图时的优异表现。这些内容为开发者提供了全面的图片优化解决方案。
224 1
|
9月前
|
存储 监控 算法
员工屏幕监控系统之 C++ 图像差分算法
在现代企业管理中,员工屏幕监控系统至关重要。本文探讨了其中常用的图像差分算法,该算法通过比较相邻两帧图像的像素差异,检测屏幕内容变化,如应用程序切换等。文中提供了C++实现代码,并介绍了其在实时监控、异常行为检测和数据压缩等方面的应用,展示了其实现简单、效率高的特点。
228 15
|
12月前
|
监控 Java Android开发
深入探讨Android系统的内存管理机制
本文将深入分析Android系统的内存管理机制,包括其内存分配、回收策略以及常见的内存泄漏问题。通过对这些方面的详细讨论,读者可以更好地理解Android系统如何高效地管理内存资源,从而提高应用程序的性能和稳定性。
450 16
|
11月前
|
监控 Java Android开发
深入探索Android系统的内存管理机制
本文旨在全面解析Android系统的内存管理机制,包括其工作原理、常见问题及其解决方案。通过对Android内存模型的深入分析,本文将帮助开发者更好地理解内存分配、回收以及优化策略,从而提高应用性能和用户体验。
|
10月前
|
存储 程序员 编译器
什么是内存泄漏?C++中如何检测和解决?
大家好,我是V哥。内存泄露是编程中的常见问题,可能导致程序崩溃。特别是在金三银四跳槽季,面试官常问此问题。本文将探讨内存泄露的定义、危害、检测方法及解决策略,帮助你掌握这一关键知识点。通过学习如何正确管理内存、使用智能指针和RAII原则,避免内存泄露,提升代码健壮性。同时,了解常见的内存泄露场景,如忘记释放内存、异常处理不当等,确保在面试中不被秒杀。最后,预祝大家新的一年工作顺利,涨薪多多!关注威哥爱编程,一起成为更好的程序员。
442 0
|
12月前
|
存储 编译器 Linux
【c++】类和对象(上)(类的定义格式、访问限定符、类域、类的实例化、对象的内存大小、this指针)
本文介绍了C++中的类和对象,包括类的概念、定义格式、访问限定符、类域、对象的创建及内存大小、以及this指针。通过示例代码详细解释了类的定义、成员函数和成员变量的作用,以及如何使用访问限定符控制成员的访问权限。此外,还讨论了对象的内存分配规则和this指针的使用场景,帮助读者深入理解面向对象编程的核心概念。
580 4
|
12月前
|
Android开发 开发者
Android性能优化——内存管理的艺术
Android性能优化——内存管理的艺术
|
编解码 Android开发 UED
构建高效Android应用:从内存优化到用户体验
【10月更文挑战第11天】本文探讨了如何通过内存优化和用户体验改进来构建高效的Android应用。介绍了使用弱引用来减少内存占用、懒加载资源以降低启动时内存消耗、利用Kotlin协程进行异步处理以保持UI流畅,以及采用响应式设计适配不同屏幕尺寸等具体技术手段。
184 2

热门文章

最新文章