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