當(dāng)前位置:首頁 > 公眾號(hào)精選 > 嵌入式云IOT技術(shù)圈
[導(dǎo)讀]一、如何學(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)源碼、編譯的

一、如何學(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)系我們,謝謝!

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
關(guān)閉
關(guān)閉