Android系統(tǒng)學(xué)習(xí)總結(jié)一
掃描二維碼
隨時(shí)隨地手機(jī)看文章
一、如何學(xué)習(xí)android系統(tǒng)?
1、了解android系統(tǒng)
主要包括發(fā)展歷史,android的基本架構(gòu),內(nèi)核,文件系統(tǒng)。
2、使用android系統(tǒng)
現(xiàn)在基本上有android手機(jī)的人天天都在用。
3、研究學(xué)習(xí)android系統(tǒng)
主要包括獲取源代碼、編譯運(yùn)行系統(tǒng)源碼、編譯的原理、系統(tǒng)啟動(dòng)流程。
4、定制修改開發(fā)android系統(tǒng)
主要包括進(jìn)行系統(tǒng)定制,android底層開發(fā)。
二、android的發(fā)展史
2003年Android公司成立,系統(tǒng)開始開發(fā)
2005年Android公司被google公司收購
2007年11月5日,google公司成立手機(jī)開發(fā)聯(lián)盟
2008年9月Android 1.0正式發(fā)布,HTC的G1手機(jī)使用
三、android系統(tǒng)整體框架
其中包括幾個(gè)重要的組成部分,主要有如下:
1、Linux內(nèi)核
android系統(tǒng)在標(biāo)準(zhǔn)linux內(nèi)核的基礎(chǔ)上加了android特有的一些驅(qū)動(dòng)。
binder驅(qū)動(dòng),用于進(jìn)程間通訊
還有電源管理,音頻驅(qū)動(dòng),輸入設(shè)備驅(qū)動(dòng)等。
2.android核心庫層
2.1 libc
BSD繼承來的標(biāo)準(zhǔn)C系統(tǒng)函數(shù)庫
2.2 SSL(Secure Sockets Layer 安全套接層)
SSL在傳輸層對(duì)網(wǎng)絡(luò)連接進(jìn)行加密, 有以下三個(gè)功能:
(1) 使用公鑰證書對(duì)雙端進(jìn)行認(rèn)證
(2) 通信加密
(3) 數(shù)據(jù)完整性檢查
2.3 SGL
底層的2D圖形引擎
2.4 Webkit
web瀏覽器引擎,支持Android瀏覽器和一個(gè)可嵌入的web視圖
2.5 FreeType
位圖(bitmap)和矢量(vector)字體顯示
2.6 OpenGL ES
3D加速庫,支持硬件加速及高度優(yōu)化的軟件加速
2.7 SQLite
強(qiáng)勁的輕型關(guān)系型數(shù)據(jù)庫引擎
2.8 Media Framework
基于PacketVideo OpenCORE實(shí)現(xiàn),支持多種常用的音頻(MP3、AAC和AMR)、視頻格式(MPEG4, H.264)的錄制回放,支持靜態(tài)圖片文件(JPG, PNG)
2.9 Surface Managerd
對(duì)顯示子系統(tǒng)的管理,為多個(gè)應(yīng)用程序提供2D和3D圖層的無縫融合dw
android運(yùn)行時(shí)環(huán)境
包含Dalvik虛擬機(jī)和java核心庫,提供java編程語言核心庫大多數(shù)功能。
Dalvik,冰島小漁村的名字,非常小,非常美麗
java虛擬機(jī)。
a.每一個(gè)android應(yīng)用程序在獨(dú)立的虛擬機(jī)中運(yùn)行,每一個(gè)虛擬機(jī)一個(gè)進(jìn)程。xxx.java
b.基于寄存器,一般jvm都是基于棧的,所以速度快。
c.執(zhí)行.dex壓縮文件,針對(duì)內(nèi)存優(yōu)化。
d.java類通過java編譯器編譯成.class,然后再由dx生成.dex文件。
e.依賴于linux內(nèi)核的一些東西,線程和內(nèi)存管理等。
3.應(yīng)用程序框架層
主要是為了讓應(yīng)用程序開發(fā)更加方便,快捷,容易。不然一個(gè)系統(tǒng)如果應(yīng)用程序開發(fā)難,那么相關(guān)應(yīng)用程序自然就少,應(yīng)用少的話玩的人自然就少。
3.1 Activity Manager
window + 用戶交互代碼,主要用于管理應(yīng)用程序的生命周期。
3.2 window Manager
顯示窗口管理
3.3 view system
基本界面組件
3.4 資源管理器
管理應(yīng)用程序相關(guān)的字符串,圖片,布局文件等資源
3.5 內(nèi)容提供者
用來應(yīng)用程序和應(yīng)用程序之間共享數(shù)據(jù)的,比如電話應(yīng)用和短信應(yīng)用共享聯(lián)系人信息。
3.6包管理器
管理應(yīng)用程序包
3.7 電話管理器
電話相關(guān)業(yè)務(wù)
3.8 消息(Notification)Manager
在狀態(tài)欄顯示信息
3.9 定位管理器
獲得當(dāng)前地理位置
3.10 XMPP serice
即時(shí)消息服務(wù)
4.應(yīng)用程序和小組件
電話,消息等等應(yīng)用程序,都是java語言開發(fā)。
5. android源代碼獲取
https://android.googlesource.com/
6.android源代碼目錄
abi 應(yīng)用程序二進(jìn)制接口
bionic bionic c庫
bootable 啟動(dòng)引導(dǎo)相關(guān)代碼
dalvik dalvik java虛擬機(jī)
其中幾個(gè)比較重要,跟移植密切相關(guān)的目錄:
device 產(chǎn)品相關(guān)代碼,按廠家分類
framework 應(yīng)用程序框架代碼
out 目標(biāo)輸出目錄
build 編譯系統(tǒng)規(guī)則
developers & development 開發(fā)工具,例子
hardware HAL層代碼,硬件抽象層代碼
packages 系統(tǒng)級(jí)應(yīng)用程序代碼
external 第三方庫工具,webkit 等。
ndk 本地代碼 linux應(yīng)用層
system 系統(tǒng)核心服務(wù)代碼,init初始化程序
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問題,請(qǐng)聯(lián)系我們,謝謝!