`
isiqi
  • 浏览: 16483617 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Android底层库libutils介绍

阅读更多

一部分 libutils概述
libutils是Android的底层库,这个库以C++实现,它提供的API也是C++的。Android的层次的C语言程序和库,大都基于libutils开发。 libutils中的头文件如下所示:
frameworks/base/include/utils
libutils的源文件:
frameworks/base/libs/utils
libutils的库名称:
libutils.so
这个库可以分成两个部分,一个部分是底层的工具,另外一个就是实现主要为实现IPC(进程间通讯)的Binder机制。
第二部分 公共库概述
libutils中的公共库部分主要包含的头文件如下所示:
Errors.h:定义宏表示错误代码
Endian.h:定义表示大小端的宏
misc.h:几个字符串和文件相关的功能函数
TextOutput.h:定义文本输出的基类TextOutput
BufferedTextOutput.h:类BufferedTextOutput,它是一个TextOutput的实现
Pipe.h:定义管道类Pipe
Buffer.h:定义内存缓冲区域的类Buffer
List.h:定义链表的模版类
SharedBuffer.h:定义类SharedBuffer表示共享内存。
String16.h:定义表示双字节字符串的类String16
String8.h:定义表示单字节字符串的类String8,并包含了从String16转换功能
VectorImpl.h:定义表示向量的类VectorImpl
Vector.h:定义继承VectorImpl的类模版Vector,以及排序向量类SortedVectorImpl
SortedVector.h:定义排序向量的模版SortedVector
KeyedVector.h:定义使用关键字的向量模板KeyedVector
threads.h:定义线程相关的类,包括线程Thread、互斥量Mutex、条件变量Condition、读写锁ReadWriteLock等
socket.h:定义套结字相关的类Socket
Timers.h:定义时间相关的函数和定时器类DurationTimer。
ZipEntry.h、ZipFileCRO.h、ZipFile.h、ZipFileRO.h、ZipUtils.h:与zip功能相关的类。

第三部分 Binder进程间通讯部分
Binder是进程间通讯部分的核心,它为不同的系统提供了可移植的进程间通讯手段。
RefBase.h :
引用计数,定义类RefBase。
Parcel.h :
为在IPC中传输的数据定义容器,定义类Parcel
IBinder.h
Binder对象的抽象接口, 定义类IBinder
Binder.h
Binder对象的基本功能, 定义类Binder和BpRefBase
BpBinder.h
BpBinder的功能,定义类BpBinder
IInterface.h
为抽象经过Binder的接口定义通用类,
定义类IInterface,类模板BnInterface,类模板BpInterface
ProcessState.h
表示进程状态的类,定义类ProcessState
IPCThreadState.h
表示IPC线程的状态,定义类IPCThreadState
IServiceManager.h:表示服务管理器的类,供其它需要构造服务的类使用
IPermissionController.h:权限控制类。
几个与内存相关的类的头文件如下所示:
IMemory.h:定义内存相关类的接口,表示堆内存的类IMemoryHeap和BnMemoryHeap,表示一般内存的类IMemory和BnMemory。
MemoryHeapBase.h:定义类MemoryHeapBase,继承并实现BnMemoryHeap
MemoryBase.h:定义类MemoryBase,继承并实现BnMemory
在一般的使用过程中,通常是以使用MemoryHeapBase类分配一块堆内存(类似malloc),而MemoryBase表示从一块分配好堆内存中的一部分内存。

此外内存相关的功能中还包含了头文件MemoryDealer.h和MemoryHeapPmem.h。
Binder功能中各个类之间的关系如下图所示:

分享到:
评论

相关推荐

    Android的底层库

    1. **本地实现底层的结构**:这部分着重介绍了Android底层的一些基础库和程序。它们是Android系统能够正常运行的关键所在,包括但不限于上述提到的libcutils、Init进程等。 2. **增加本地程序和库的方法**:对于...

    Android 底层库和程序.docx

    总的来说,Android底层库和程序构成了操作系统的基础,它们的高效和稳定运行是Android系统能够支持丰富应用和提供流畅用户体验的关键。Bionic、Libcutils和Libutils提供了核心的C/C++支持,而Binder则确保了系统组件...

    04_Android的底层库和程序-Android课件

    Android底层库和程序不仅支持了系统的稳定运行,还为开发者提供了丰富的API来构建高质量的应用程序。本文将详细介绍Android的底层库和程序的相关知识点。 #### 二、底层库和程序的结构 **1.1 本地实现底层的结构**...

    【Android系统原理与开发要点详解】04_Android的底层库和程序

    #### 二、Android底层库和程序的结构 Android的底层主要由一系列库和程序构成,这些库和程序支持着整个系统的运行。主要包括以下几个部分: 1. **标准C/C++库bionic**:这是Android系统中使用的一种轻量级C/C++...

    android底层开发

    《Android的底层库和程序.pdf》则详细介绍了Android的系统库,如libc、libutils、libui等,以及这些库如何支持Android应用程序的运行。这部分内容对于理解和优化性能至关重要。 《Android的多媒体系统.pdf》、...

    android系统原理及开发要点详解

     第4章“Android的底层库和程序”,介绍Android系统的基础程序,以本地程序为主。  第5章“Android的Java虚拟机和Java环境”,这是介于本地和Java层之间的相关内容,主要介绍Android的Java虚拟机Dalvik的基本概念...

    android 完全中文版 开发应用详解

    第4章 android的底层库和程序 60 4.1 底层库和程序的结构 60 4.1.1 本地实现的基本结构 60 4.1.2 增加本地程序和库的方法 61 4.2 标准c/c++库bionic 64 4.3 c语言工具库libcutils 65 4.4 init可执行程序 66 4.5 ...

    安卓系统源码 (android 14 rar)

    2. **System Core**:包含Android运行所需的库、服务和工具,如HAL(硬件抽象层)、libc、libutils等。 3. **Libraries**:包含各种C/C++库,如OpenSSL、SQLite、WebKit等,为上层应用程序提供支持。 4. **App ...

    Android系统原理及开发要点详解..docx

    其次,本地框架层的介绍包括了Android的底层库和程序,如Bionic libc、libutils、liblog等,这些都是Android系统运行的基础。此外,书中还详细解析了Android的Java虚拟机(Dalvik或ART)和Java环境,如何运行Android...

    android源码core文件夹下的文件(包含资源)

    这个文件夹下包含了各种核心库、系统服务、框架层的实现以及与Android操作系统底层交互的关键代码。深入理解和分析Android源码中的"core"目录,有助于开发者更深入地了解Android系统的运行机制。 1. **系统库**:在...

    Android 代码分析

    libutils是Android的一个底层库,包含对Binder IPC的部分实现和其他公共功能。 Android IPC通信机制的源码分析深入剖析了Binder的工作原理,包括ServiceManager注册、客户端获取服务、Kernel通信等阶段。多客户端...

    cxx_android_source:来自官方网站的android来源-android source site

    从"cxx"我们可以推测,这个源码可能包含了Android系统中的C++库、系统服务、HAL(硬件抽象层)或其他底层模块。 Android开源项目(AOSP,Android Open Source Project)允许开发者深入理解Android的工作原理,甚至...

    hal层示例,AP + service

    HAL库通常会链接到系统库,如liblog用于日志记录,libutils用于通用工具函数,以及libhardware用于与其他HAL交互。 2.3 配置和编译:在Android源码树中,HAL的配置文件(Android.mk或CMakeLists.txt)用于指示构建...

    Android21_SourceNote:对于Android原始码的一些注释和翻译-android

    库层包含了一系列C/C++库,如Libc、libutils、liblog等,为Android系统提供了基础功能。框架层则主要由Java代码构成,包括ActivityManagerService、WindowManagerService等关键服务,以及Intent、ContentProvider等...

    androidjava源码-HandlerDemo:“深入了解Android消息机制和源码分析(Java层和Native层)”文章示例代码

    在Android系统中,Message和MessageQueue的底层实现是C++代码,位于libutils库中。这部分源码涉及到线程同步、内存管理等复杂操作,对于理解Android系统的运行机制至关重要。例如,MessageQueue的`next()`方法会阻塞...

    platform_system_core

    这个项目可能涵盖了各种底层服务、系统库和框架,是Android系统运行的基础。由于标签为"C++",我们可以推测这个项目大量使用了C++语言进行开发,这符合Android系统对性能敏感部分的编程习惯,C++能够提供更好的性能...

    frameworks_native

    前者主要包含Java API和相关的服务,而后者则包含了更多的原生库和服务,这些服务直接与硬件交互,提供性能更优的底层支持。例如,Android运行时环境(ART)、图形系统(如OpenGL ES)、多媒体框架(如Stagefright)...

Global site tag (gtag.js) - Google Analytics