android源码中的cc++库(android中动态和静态版本都有的
库)
通过⽐较out/.../下的obj中SHARED_LIBRARIES,STATIC_LIBRARIES,删选出⼀下⼏个共同的库。
c
cutils
ext4_utils
m
stdc++
thread_db
utils
webcore
z
log
android重写的标准c函数库libc:
$ cd STATIC_LIBRARIES
$ cd libc_intermediates
$ ls
arch-arm  bionic  libc.a  unistd  WHOLE
$ cd ../
$ cd SHARED_LIBRARIES/
$ cd libc_intermediates/
$ ls
arch-arm  bionic  LINKED  unistd
$ cd LINKED
$ ls
libc.so
源码路径:bionic/libc
头⽂件⽬录:bionic/libc/include
从其Android.mk中可以看出编译了libc.a和libc.so
c语⾔基本的⼯具库libcutils:
libcutils.a/so的源码路径:system/core/libcutils
头⽂件路径:system/core/include/cutils
从其Android.mk中可以看出编译了libcutils.a和libcutils.so
ext4相关的⼯具库libext4_utils:
libext4_utils.a/so的源码路径:system/extras/ext4_utils
头⽂件路径:system/extras/ext4_utils
从其Android.mk中可以看出编译了libext4_utils.a和libext4_utils.so
标准数学库libm:math
libm.a/so的源码路径:bionic/libm
头⽂件路径:bionic/libm/include
例如c++⽤c的数学库
#include <cmath>
$g++ test.cpp -o test -lm
android重写的c++函数库libstdc++:
libstdc++.a/so的源码路径:bionic/libstdc++
头⽂件路径:bionic/libstdc++/include
多线程程序的调试器库libthread_db:
libthread_db.a/so的源码路径:bionic/libthread_dbsystem的头文件
头⽂件路径:bionic/libthread_db/include
c++实现的底层⼯具库libutils:
这个库可以分成两个部分,⼀个部分是底层的⼯具,另外⼀个就是实现主要为实现IPC(进程间通讯)的Binder机制。
libutils.a/so的源码路径:frameworks/base/libs/utils
头⽂件路径:frameworks/base/include/utils
详细情况键附录:
浏览器引擎核⼼库libwebcore:
libwebcore.a/so的源码路径:external/webkit
头⽂件路径:
通⽤压缩库libz:
libz.a/so的源码路径:external/zlib
log库:
system/core/liblog
附录:
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。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。