第一部分
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.h
imemoryheap
和bnmemoryheap
,表示一般記憶體的類
imemory
和bnmemory
。memoryheapbase.h
:定義類
memoryheapbase
,繼承並實現
bnmemoryheap
memorybase.h
:定義類
memorybase
,繼承並實現
bnmemory
在一般的使用過程中,通常是以使用
memoryheapbase
類分配一塊堆記憶體(類似
malloc
),而memorybase
表示從一塊分配好堆記憶體中的一部分記憶體。
此外記憶體相關的功能中還包含了標頭檔案
memorydealer.h和。
Android的底層庫libutils介紹
第一部分 libutils概述 libutils是android的底層庫,這個庫以c 實現,它提供的api也是c 的。android的層次的c語言程式和庫,大都基於libutils開發。libutils中的標頭檔案如下所示 frameworks base include utils libutils...
Android系統底層架構 譯
android提供了裝置移植和支援方面有較大的自由度,可以制定自有的裝置規範和驅動。通過硬體抽象層 hal hardware abstraction layer 可以在底層硬體驅動和上層平台之間建立關聯 hooks androind通過自身的開源性,來支援各種型別的裝置發展。在將android系統移...
Android底層開發之Audio HAL
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!android底層開發之audio hal 在android音訊底層除錯 基於tinyalsa中以 拋開android的天生複雜,回歸嵌入式linux的本質 的方式介紹如何除錯linux核心中的音訊驅動。這裡向上再伸展一下進入hal層,看是如何將t...