Android(['?ndr?id])是一個(gè)以L(fǎng)inux為基礎(chǔ)的半開(kāi)源操作系統(tǒng),主要用于移動(dòng)設(shè)備,由Google和開(kāi)放手持設(shè)備聯(lián)盟開(kāi)發(fā)與領(lǐng)導(dǎo)。 Android 系統(tǒng)" />
更新時(shí)間:2024-04-06 18:39:24作者:admin3
android - 以L(fǎng)inux為基礎(chǔ)的操作系統(tǒng)
Android(['?ndr?id])是一個(gè)以L(fǎng)inux為基礎(chǔ)的半開(kāi)源操作系統(tǒng),主要用于移動(dòng)設(shè)備,由Google和開(kāi)放手持設(shè)備聯(lián)盟開(kāi)發(fā)與領(lǐng)導(dǎo)。 Android 系統(tǒng)最初由安迪·魯賓(Andy Rubin)制作,最初主要支持手機(jī)。2005年8月17日被Google收購(gòu)。2007年11月5日,Google與84家硬件制造商、軟件開(kāi)發(fā)商及電信營(yíng)運(yùn)商組成開(kāi)放手持設(shè)備聯(lián)盟(Open Handset Alliance)來(lái)共同研發(fā)改良Android系統(tǒng)并生產(chǎn)搭載Android的智慧型手機(jī),并逐漸拓展到平板電腦及其他領(lǐng)域上。隨后,Google以Apache免費(fèi)開(kāi)源許可證的授權(quán)方式,發(fā)布了Android的源代碼。
一、系統(tǒng)介紹
Android是一種以L(fǎng)inux與JAVA為基礎(chǔ)的開(kāi)放源代碼操作系統(tǒng),主要使用于便攜設(shè)備。中國(guó)大陸地區(qū)較多人使用“安卓”。Android操作系統(tǒng)最初由Andy Rubin開(kāi)發(fā),被谷歌收購(gòu)后則由Google公司和開(kāi)放手機(jī)聯(lián)盟領(lǐng)導(dǎo)及開(kāi)發(fā),主要支持手機(jī)與平板。
二、系統(tǒng)特點(diǎn)
【系統(tǒng)內(nèi)核 】
Android 是運(yùn)行于 Linux kernel之上,但并不是GNU/Linux。因?yàn)樵谝话鉍NU/Linux 里支持的功能,Android 大都沒(méi)有支持,包括Cairo、X11、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。
Android又以bionic 取代Glibc、以Skia 取代Cairo、再以opencore 取代FFmpeg 等等。Android 為了達(dá)到商業(yè)應(yīng)用,必須移除被GNU GPL授權(quán)證所約束的部份,例如Android將驅(qū)動(dòng)程序移到 userspace,使得Linux driver 與 Linux kernel徹底分開(kāi)。
bionic/libc/kernel/ 并非標(biāo)準(zhǔn)的kernel header files。Android 的 kernel header 是利用工具由 Linux kernel header 所產(chǎn)生的,這樣做是為了保留常數(shù)、數(shù)據(jù)結(jié)構(gòu)與宏。
Android 的 Linux kernel控制包括安全(Security),存儲(chǔ)器管理(Memory Management),程序管理(Process Management),網(wǎng)絡(luò)堆棧(Network Stack),驅(qū)動(dòng)程序模型(Driver Model)等。下載Android源碼之前,先要安裝其構(gòu)建工具 Repo來(lái)初始化源碼。Repo 是 Android 用來(lái)輔助Git工作的一個(gè)工具。
【硬件抽象層】
Android 的 HAL(硬件抽像層)是能以封閉源碼形式提供硬件驅(qū)動(dòng)模塊。HAL 的目的是為了把 Android framework 與 Linux kernel 隔開(kāi),讓 Android 不至過(guò)度依賴(lài) Linux kernel,以達(dá)成 kernel independent 的概念,也讓 Android framework 的開(kāi)發(fā)能在不考量驅(qū)動(dòng)程序?qū)崿F(xiàn)的前提下進(jìn)行發(fā)展。
HAL stub 是一種代理人(proxy)的概念,stub 是以 *.so 檔的形式存在。Stub 向 HAL“提供”操作函數(shù)(operations),并由 Android runtime 向 HAL 取得 stub 的 operations,再 callback 這些操作函數(shù)。HAL 里包含了許多的 stub(代理人)。Runtime 只要說(shuō)明“類(lèi)型”,即 module ID,就可以取得操作函數(shù)。