Andriod OS introduction 2014-09-10_第1頁
Andriod OS introduction 2014-09-10_第2頁
Andriod OS introduction 2014-09-10_第3頁
Andriod OS introduction 2014-09-10_第4頁
Andriod OS introduction 2014-09-10_第5頁
已閱讀5頁,還剩7頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Android OS Structure1. Android 的歷史Android是一種基于Linux的自由及開放源代碼的操作系統(tǒng),主要使用于移動(dòng)設(shè)備,如智能手機(jī)和平板電腦,由Google公司和開放手機(jī)聯(lián)盟領(lǐng)導(dǎo)及開發(fā)。尚未有統(tǒng)一中文名稱,中國大陸地區(qū)較多人使用“安卓”或“安致”。Android操作系統(tǒng)最初由Andy Rubin開發(fā),主要支持手機(jī)。2005年8月由Google收購注資。2007年11月,Google與84家硬件制造商、軟件開發(fā)商及電信營(yíng)運(yùn)商組建開放手機(jī)聯(lián)盟共同研發(fā)改良Android系統(tǒng)。隨后Google以Apache開源許可證的授權(quán)方式,發(fā)布了Android的源代碼。第一部And

2、roid智能手機(jī)發(fā)布于2008年10月。Android逐漸擴(kuò)展到平板電腦及其他領(lǐng)域上,如電視、數(shù)碼相機(jī)、游戲機(jī)等。2011年第一季度,Android在全球的市場(chǎng)份額首次超過塞班系統(tǒng),躍居全球第一。 2013年的第四季度,Android平臺(tái)手機(jī)的全球市場(chǎng)份額已經(jīng)達(dá)到78.1%。2013年09月24日谷歌開發(fā)的操作系統(tǒng)Android在迎來了5歲生日,全世界采用這款系統(tǒng)的設(shè)備數(shù)量已經(jīng)達(dá)到10億臺(tái)。1.12008年9月發(fā)布的Android第一版。1.5Cupcake(紙杯蛋糕):2009年4月30日發(fā)布。1.6Donut(甜甜圈):2009年9月15日發(fā)布。2.02009年10月26日發(fā)布。2.2/2

3、.2.1 Froyo(凍酸奶):2010年5月20日發(fā)布。2.3.xGingerbread(姜餅):2010年12月7日發(fā)布。3.0Honeycomb(蜂巢):2011年2月2日發(fā)布。3.1Honeycomb(蜂巢):2011年5月11日布發(fā)布。3.2Honeycomb(蜂巢):2011年7月13日發(fā)布。4.0Ice Cream Sandwich(冰激凌三明治):2011年10月19日在香港發(fā)布。4.1Jelly Bean(果凍豆):2012年6月28日4.2 Jelly Bean 原生系統(tǒng)用戶界面:2012年10月30日4.4KitKat(奇巧巧克力):2013年11月01日正式發(fā)

4、布。2. Android OS 結(jié)構(gòu)android的系統(tǒng)架構(gòu)和其操作系統(tǒng)一樣,采用了分層的架構(gòu)。從架構(gòu)圖看,android分為四個(gè)層,從高層到低層分別是應(yīng)用程序?qū)印?yīng)用程序框架層、系統(tǒng)運(yùn)行庫層和linux核心層。藍(lán)色的代表java程序,黃色的代碼為運(yùn)行JAVA程序而實(shí)現(xiàn)的虛擬機(jī),綠色部分為C/C+語言編寫的程序庫,紅色的代碼內(nèi)核(linux內(nèi)核+drvier)1.應(yīng)用程序Android會(huì)同一系列核心應(yīng)用程序包一起發(fā)布,該應(yīng)用程序包包括email客戶端,SMS短消息程序,日歷,地圖,瀏覽器,聯(lián)系人管理程序等。所有的應(yīng)用程序都是使用JAVA語言編寫的。2.應(yīng)用程序框架隱藏在每個(gè)應(yīng)用后面的是一系列的

5、服務(wù)和系統(tǒng), 其中包括;    * 豐富而又可擴(kuò)展的視圖(Views),可以用來構(gòu)建應(yīng)用程序, 它包括列表(lists),網(wǎng)格(grids),文本框(text boxes),按鈕(buttons), 甚至可嵌入的web瀏覽器。    * 內(nèi)容提供器(Content Providers)使得應(yīng)用程序可以訪問另一個(gè)應(yīng)用程序的數(shù)據(jù)(如聯(lián)系人數(shù)據(jù)庫), 或者共享它們自己的數(shù)據(jù)    * 資源管理器(Resource Manager)提供非代碼資源的訪問,如本地字符串,圖形,和布局文件( layout files )。   

6、 * 通知管理器 (Notification Manager) 使得應(yīng)用程序可以在狀態(tài)欄中顯示自定義的提示信息。    * 活動(dòng)管理器( Activity Manager) 用來管理應(yīng)用程序生命周期并提供常用的導(dǎo)航回退功能。3.系統(tǒng)運(yùn)行庫1)程序庫Android 包含一些C/C+庫,這些庫能被Android系統(tǒng)中不同的組件使用。它們通過 Android 應(yīng)用程序框架為開發(fā)者提供服務(wù)。以下是一些核心庫:    * Bionic系統(tǒng) C 庫 - 一個(gè)從 BSD 繼承來的標(biāo)準(zhǔn) C 系統(tǒng)函數(shù)庫( libc ), 它是專門為基于 embedded linux 的設(shè)

7、備定制的。    * 媒體庫 - 基于 PacketVideoOpenCORE;該庫支持多種常用的音頻、視頻格式回放和錄制,同時(shí)支持靜態(tài)圖像文件。編碼格式包括MPEG4, H.264, MP3, AAC, AMR, JPG, PNG 。    * Surface Manager - 對(duì)顯示子系統(tǒng)的管理,并且為多個(gè)應(yīng)用程序提 供了2D和3D圖層的無縫融合。    * Webkit,LibWebCore - 一個(gè)最新的web瀏覽器引擎用,支持Android瀏覽器和一個(gè)可嵌入的web視圖。鼎鼎大名的 Apple Safari背后的引擎就是W

8、ebkit    * SGL - 底層的2D圖形引擎    * 3D libraries - 基于OpenGL ES 1.0 APIs實(shí)現(xiàn);該庫可以使用硬件 3D加速(如果可用)或者使用高度優(yōu)化的3D軟加速。    * FreeType -位圖(bitmap)和矢量(vector)字體顯示。    * SQLite - 一個(gè)對(duì)于所有應(yīng)用程序可用,功能強(qiáng)勁的輕型關(guān)系型數(shù)據(jù)庫引擎。    *還有部分上面沒有顯示出來的就是硬件抽象層。其實(shí)Android并非把所有的設(shè)備驅(qū)動(dòng)都放在linux內(nèi)核里面,而是

9、實(shí)現(xiàn)在userspace空間,這么做的主要原因是GPL協(xié)議,Linux是遵循該協(xié)議來發(fā)布的,也就意味著對(duì) linux內(nèi)核的任何修改,都必須發(fā)布其源代碼。而現(xiàn)在這么做就可以避開而無需發(fā)布其源代碼,畢竟它是用來賺錢的。而在linux內(nèi)核中為這些userspace驅(qū)動(dòng)代碼開一個(gè)后門,就可以讓本來userspace驅(qū)動(dòng)不可以直接控制的硬件可以被訪問。而只需要公布這個(gè)后門代碼即可。一般情況下如果要將Android移植到其他硬件去運(yùn)行,只需要實(shí)現(xiàn)這部分代碼即可。包括:顯示器驅(qū)動(dòng),聲音,相機(jī),GPS,GSM等等2)Android 運(yùn)行庫Android 包括了一個(gè)核心庫,該核心庫提供了JAVA編程語言核心庫的

10、大多數(shù)功能。每一個(gè)Android應(yīng)用程序都在它自己的進(jìn)程中運(yùn)行,都擁有一個(gè)獨(dú)立的Dalvik虛擬機(jī)實(shí)例。Dalvik被設(shè)計(jì)成一個(gè)設(shè)備可以同時(shí)高效地運(yùn)行多個(gè)虛擬系統(tǒng)。 Dalvik虛擬機(jī)執(zhí)行(.dex)的Dalvik可執(zhí)行文件,該格式文件針對(duì)小內(nèi)存使用做了優(yōu)化。Dalvik虛擬機(jī)依賴于linux內(nèi)核的一些功能,比如線程機(jī)制和底層內(nèi)存管理機(jī)制。4.Linux 內(nèi)核Android 的核心系統(tǒng)服務(wù)依賴于 Linux 2.6 內(nèi)核,如安全性,內(nèi)存管理,進(jìn)程管理, 網(wǎng)絡(luò)協(xié)議棧和驅(qū)動(dòng)模型。 Linux 內(nèi)核也同時(shí)作為硬件和軟件棧之間的抽象層。其外還對(duì)其做了部分修改,主要涉及兩部分修改:1).Binder (

11、IPC):提供有效的進(jìn)程間通信,雖然linux內(nèi)核本身已經(jīng)提供了這些功能,但Android系統(tǒng)很多服務(wù)都需要用到該功能,為了某種原因其實(shí)現(xiàn)了自己的一套。2).電源管理:主要是為了省電,畢竟是手持設(shè)備嘛,低耗電才是我們的追求。3. Android 代碼結(jié)構(gòu)l bionic:android 中所使用的是標(biāo)準(zhǔn)C庫源文件,該項(xiàng)目將被編譯成靜態(tài)庫文件,這些庫文件僅在編譯其他C程序時(shí)使用,不會(huì)被輸出到最終設(shè)備中l(wèi) bootable:二次引導(dǎo)程序源碼。l build:編譯系統(tǒng)中樞,該目錄下的各種make腳本和shell腳本共同組成了android的編譯環(huán)境l cts:兼容測(cè)試代碼,基于android系統(tǒng)的手

12、機(jī)如果需要google的認(rèn)證,則必須經(jīng)過google的兼容性測(cè)試,兼容性測(cè)試的目的是為了保證該設(shè)備具有標(biāo)準(zhǔn)的SDK API接口l dalvik:android中的java虛擬機(jī)相關(guān)的源碼,虛擬機(jī)內(nèi)部設(shè)計(jì)相關(guān)的文檔可以參考dalvik/docs目錄下的說明文檔l development:一些開發(fā)android工程所使用的相關(guān)配置或文件,如:一些.classpath文件l device:不同設(shè)備相關(guān)的編譯腳本文件,一個(gè)設(shè)備一般就是指一種型號(hào)的手機(jī),如:Htc magic、Nexus One、Nexus S 等等l external:android系統(tǒng)所依賴的一些外部庫文件,如:sqlite、ope

13、ncore等,這些文件大部分都是c/c+代碼,也有少量的java庫l frameworks:Framework的內(nèi)核源碼,主要由java文件組成l hardware:Android定義的硬件抽象層(HAL)相關(guān)的文件l libcore:Dalvik虛擬機(jī)所依賴的java庫,如HashMap、ArrayList等,這些庫和Dailvik共同組成dailvik的java運(yùn)行環(huán)境l ndk:Native Development Kit ,即編譯NDK所需的相關(guān)文件l packages:Android中的一些系統(tǒng)應(yīng)用程序,比如Contacts、Phone等l prebuilt:編譯所需的程序文件,主要

14、包含不同平臺(tái)的ARM編譯器l sdk:編譯SDK所需的相關(guān)文件。l system:Android底層的Linux所需的一些系統(tǒng)工具程序,這些程序主要運(yùn)行于adb 、logcat等l tools:一些其他輔助工具。l vendor:和device目錄中的程序共同定義一個(gè)設(shè)備所包含的私有文件.Google提供的Android包含了原始Android的目標(biāo)機(jī)代碼,主機(jī)編譯工具、仿真環(huán)境,代碼包經(jīng)過解壓縮后,第一級(jí)別的目錄和文件如下所示:.|- Makefile        (全局的Makefile)|- bionic  

15、0;       (Bionic含義為仿生,這里面是一些基礎(chǔ)的庫的源代碼)|- bootloader      (引導(dǎo)加載器)|- build build目錄中的內(nèi)容不是目標(biāo)所用的代碼,而是編譯和配置所需要的腳本和工具|- dalvik          (JAVA虛擬機(jī))|- development     (程序開發(fā)所需要的模板和工具)|- external      &#

16、160; (目標(biāo)機(jī)器使用的一些庫)|- frameworks      (應(yīng)用程序的框架層)|- hardware        (與硬件相關(guān)的庫)|- kernel          (Linux2.6的源代碼)|- packages        (Android的各種應(yīng)用程序)|- prebuilt       

17、 (Android在各種平臺(tái)下編譯的預(yù)置腳本)|- recovery        (與目標(biāo)的恢復(fù)功能相關(guān))- system          (Android的底層的一些庫)bionic目錄展開一個(gè)級(jí)別的目錄如下所示:bionic/|- Android.mk|- libc|- libdl|- libm|- libstdc+|- libthread_db- linkerbootloader目錄展開的兩個(gè)級(jí)別目錄:bootloader/- legacy  &

18、#160; |- Android.mk    |- README    |- arch_armv6    |- arch_msm7k    |- fastboot_protocol.txt    |- include    |- libboot    |- libc    |- nandwrite    - usbloaderbuild目錄展開的一個(gè)級(jí)別的目錄如下所示:build/|- buildspec.mk.de

19、fault|- cleanspec.mk|- core                     (各種以mk為結(jié)尾的文件,它門是編譯所需要的Makefile)|- envsetup.sh|- libs|- target                   (包含board和product兩個(gè)目錄,為目標(biāo)所需要文件)- tools

20、                     (編譯過程中主機(jī)所需要的工具,一些需要經(jīng)過編譯生成)其中,core中的Makefile是整個(gè)Android編譯所需要的真正的Makefile,它被頂層目錄的Makefile引用。envsetup.sh是一個(gè)在使用仿真器運(yùn)行的時(shí)候,用于設(shè)置環(huán)境的腳本。dalvik目錄用于提供Android JAVA應(yīng)用程序運(yùn)行的基礎(chǔ)JAVA虛擬機(jī)。frameworks目錄展開的一個(gè)級(jí)別的目錄如下所示:frameworks/|- ba

21、se|- opt- policiesframeworks是Android應(yīng)用程序的框架。packages目錄展開的兩個(gè)級(jí)別的目錄如下所示:packages/|- apps|   |- AlarmClock|   |- Browser|   |- Calculator|   |- Calendar|   |- Camera|   |- Contacts|   |- Email|   |- GoogleSearch|   

22、;|- HTMLViewer|   |- IM|   |- Launcher|   |- Mms|   |- Music|   |- PackageInstaller|   |- Phone|   |- Settings|   |- SoundRecorder|   |- Stk|   |- Sync|   |- Updater|   - VoiceDial

23、er- providers    |- CalendarProvider    |- ContactsProvider    |- DownloadProvider    |- DrmProvider    |- GoogleContactsProvider    |- GoogleSubscribedFeedsProvider    |- ImProvider    |- MediaProvider    - Te

24、lephonyProviderpackages中包含兩個(gè)目錄,其中apps中是Android中的各種應(yīng)用程序,providers是一些內(nèi)容提供者(在Android中的一個(gè)數(shù)據(jù)源)。packages中兩個(gè)目錄的內(nèi)容大都是使用JAVA編寫的程序,各個(gè)文件夾的層次結(jié)構(gòu)是類似的。external目錄展開的一個(gè)級(jí)別的目錄如下所示:external/|- aes|- apache-http|- bluez|- clearsilver|- dbus|- dhcpcd|- dropbear|- elfcopy|- elfutils|- emma|- esd|- expat|- fdlibm|- freetyp

25、e|- gdata|- giflib|- googleclient|- icu4c|- iptables|- jdiff|- jhead|- jpeg|- libffi|- libpcap|- libpng|- libxml2|- netcat|- netperf|- neven|- opencore|- openssl|- oprofile|- ping|- ppp|- protobuf|- qemu|- safe-iop|- skia|- sonivox|- sqlite|- srec|- strace|- tagsoup|- tcpdump|- tinyxml|- tremor|- we

26、bkit|- wpa_supplicant|- yaffs2- zlib在external中,每個(gè)目錄表示Android目標(biāo)系統(tǒng)中的一個(gè)模塊,可能有一個(gè)或者若干個(gè)庫構(gòu)成。其中:opencore為PV(PacketVideo),它是Android多媒體框架的核心。webkit是Android網(wǎng)絡(luò)瀏覽器的核心。sqlite是Android數(shù)據(jù)庫系統(tǒng)的核心。openssl是Secure Socket Layer,一個(gè)網(wǎng)絡(luò)協(xié)議層,用于為數(shù)據(jù)通訊提供安全支持。prebuilt目錄展開的一個(gè)級(jí)別的目錄如下所示:prebuilt/|- Android.mk|- android-arm|- common|-

27、darwin-x86|- linux-x86- windowssystem目錄展開的兩個(gè)級(jí)別的目錄如下所示:system/|- bluetooth|   |- bluedroid|   - brfpatch|- core|   |- Android.mk|   |- README|   |- adb|   |- cpio|   |- debuggerd|   |- fastboot|   |- include

28、0;           (各個(gè)庫接口的頭文件)|   |- init|   |- libctest|   |- libcutils|   |- liblog|   |- libmincrypt|   |- libnetutils|   |- libpixelflinger|   |- libzipfile|   |- logcat| 

29、 |- logwrapper|   |- mkbootimg|   |- mountd|   |- netcfg|   |- rootdir|   |- sh|   - toolbox|- extras|   |- Android.mk|   |- latencytop|   |- libpagemap|   |- librank|   |- procmem|

30、0;  |- procrank|   |- showmap|   |- showslab|   |- sound|   |- su|   |- tests|   - timeinfo- wlan    - tisystemapp 這個(gè)里面主要存放的是常規(guī)下載的應(yīng)用程序,可以看到都是以APK格式結(jié)尾的文件,在這個(gè)文件夾下的程序?yàn)橄到y(tǒng)默認(rèn)的組件,自己安裝的軟件將不會(huì)出現(xiàn)在這里,而是data文件夾中。    &#

31、160;  systemappAlarmClock.apk 鬧鐘       systemappBrowser.apk瀏覽器       systemappBugreport.apk Bug報(bào)告       systemappCalculator.apk 計(jì)算器systembin 這個(gè)目錄下的文件都是系統(tǒng)的本地程序,從bin文件夾名稱可以看出是binary二進(jìn)制的程序,里面主要是Linux系統(tǒng)自帶的組件:&

32、#160; systembinam       systembinapp_process 系統(tǒng)進(jìn)程       systembindalvikvmDalvik虛擬機(jī)宿主       systembindbus-daemon 系統(tǒng)BUS總線監(jiān)控       systembindebuggerd 調(diào)試器    &

33、#160;  systembindebug_tool 調(diào)試工具       systembindexopt DEX選項(xiàng)       systembindhcpcd DHCP服務(wù)器systemetc系統(tǒng)的配置文件,比如APN接入點(diǎn)設(shè)置等核心配置。       systemetcapns-conf.xml APN接入點(diǎn)配置文件       system

34、etcAudioFilter.csv 音頻過濾器配置文件       systemetcAudioPara4.csv       systemetcbookmarks.xml 書簽數(shù)據(jù)庫       systemetcdbus.conf 總線監(jiān)視配置文件systemfonts 字體文件夾,除了標(biāo)準(zhǔn)字體和粗體、斜體外可以看到文件體積最大的可能是中文字庫,或一些unicode字庫,從T-Mobile G1上可以清楚的看到

35、顯示簡(jiǎn)體中文正常,其中DroidSansFallback.ttf文件大小       systemfontsDroidSans-Bold.ttf       systemfontsDroidSans.ttf       systemfontsDroidSansFallback.ttf       systemfontsDroidSansMono.ttfsys

36、temframework主要是一些核心的文件,從后綴名為jar可以看出是是系統(tǒng)平臺(tái)框架。  systemframeworkam.jar       systemframeworkam.odex       systemframeworkandroid.awt.jar AWT庫       systemframeworkandroid.awt.odexsystemlib目錄中存放的主要是系統(tǒng)底層庫,

37、如平臺(tái)運(yùn)行時(shí)庫。       systemliblibaes.so       systemliblibagl.so       systemliblibandroid_runtime.so Android運(yùn)行時(shí)庫       systemliblibandroid_servers.so 系統(tǒng)服務(wù)組件       systeml

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論