版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 湖南省岳陽市岳陽縣第一中學(xué)2024-2025學(xué)年高一上學(xué)期10月月考物理試題(含答案)
- 2024年度云南省高校教師資格證之高等教育法規(guī)能力提升試卷A卷附答案
- 廣西壯族自治區(qū)南寧市新民中學(xué)2025屆九年級(jí)上學(xué)期9月月考化學(xué)試卷(含答案)
- 2024-2025學(xué)年遼寧省沈陽二中高一(上)月考數(shù)學(xué)試卷(10月份)(含答案)
- 2024年度云南省高校教師資格證之高等教育學(xué)考前自測(cè)題及答案
- 2024年光柵式萬能工具顯微鏡項(xiàng)目投資申請(qǐng)報(bào)告代可行性研究報(bào)告
- 贛南師范大學(xué)《教育研究方法》2023-2024學(xué)年第一學(xué)期期末試卷
- 阜陽師范大學(xué)《形式與政策》2022-2023學(xué)年第一學(xué)期期末試卷
- 阜陽師范大學(xué)《商業(yè)銀行經(jīng)營(yíng)與管理學(xué)》2022-2023學(xué)年第一學(xué)期期末試卷
- 阜陽師范大學(xué)《大學(xué)心理健康教育》2021-2022學(xué)年第一學(xué)期期末試卷
- 醫(yī)療機(jī)構(gòu)聘用合同標(biāo)準(zhǔn)范本
- 表內(nèi)乘法練習(xí)題含答案(考試直接用)
- 家長(zhǎng)會(huì)課件:小學(xué)三年級(jí)家長(zhǎng)會(huì)課件
- BEC中級(jí)真題及答案
- 高中校運(yùn)會(huì)安全主題班會(huì)
- SYT 6739-2021 石油鉆井參數(shù)監(jiān)測(cè)儀技術(shù)條件-PDF解密
- 第10課時(shí)-小人物-大情懷-單元總結(jié)-七年級(jí)語文下冊(cè)(部編版)
- clsim100-32藥敏試驗(yàn)標(biāo)準(zhǔn)2023中文版
- 中成藥處方審核專家講座
- 前端開發(fā)工程師勞動(dòng)合同模板
- 2023-2024學(xué)年八年級(jí)英語第一學(xué)期期中考試試題(含答案)
評(píng)論
0/150
提交評(píng)論