Android的底層庫libutils介紹

2021-09-06 22:24:32 字數 2071 閱讀 8080

第一部分 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

iinte***ce.h:

為抽象經過binder的介面定義通用類,

定義類iinte***ce,類模板bninte***ce,類模板bpinte***ce

processstate.h

表示程序狀態的類,定義類processstate

ipcthreadstate.h

表示ipc執行緒的狀態,定義類ipcthreadstate

iservicemanager.h:表示服務管理器的類,供其它需要構造服務的類使用

ipermissioncontroller.h:許可權控制類。

imemory和bnmemory。

memoryheapbase.h:定義類memoryheapbase,繼承並實現bnmemoryheap

memorybase.h:定義類memorybase,繼承並實現bnmemory

在一般的使用過程中,通常是以使用memoryheapbase類分配一塊堆記憶體(類似malloc),而memorybase表示從一塊分配好堆記憶體中的一部分記憶體。

Android的底層庫libutils介紹

第一部分 libutils 概述libutils 是android 的底層庫,這個庫以 c 實現,它提供的 api也是 c 的。android 的層次的 c語言程式和庫,大都基於 libutils 開發。libutils中的 標頭檔案如下所示 frameworks base include util...

Android系統底層架構 譯

android提供了裝置移植和支援方面有較大的自由度,可以制定自有的裝置規範和驅動。通過硬體抽象層 hal hardware abstraction layer 可以在底層硬體驅動和上層平台之間建立關聯 hooks androind通過自身的開源性,來支援各種型別的裝置發展。在將android系統移...

Android底層開發之Audio HAL

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!android底層開發之audio hal 在android音訊底層除錯 基於tinyalsa中以 拋開android的天生複雜,回歸嵌入式linux的本質 的方式介紹如何除錯linux核心中的音訊驅動。這裡向上再伸展一下進入hal層,看是如何將t...