安卓系統是基於Linux系統;安卓是Google於2007年11月05日宣布的基於Linux平台的開源手機作業系統的名稱,該平台由作業系統、中間件、使用者介面和應用軟體組成。
本教學操作環境:linux5.9.8系統、Dell G3電腦。
安卓系統也是基於Linux系統的嗎?
Android 作業系統介紹
Android是Google於2007年11月05日宣布的基於Linux平台的開源手機作業系統的名稱,該平台由作業系統、中間件、使用者介面和應用軟體組成。它採用軟體堆疊(Software Stack,又稱軟體疊層)的架構,主要分為三個部分。底層以Linux核心工作為基礎,由C語言開發,只提供基本功能;中間層包含函數庫Library和 虛擬機器Virtual Machine,由C 開發。最上層是各種應用軟體,包括通話程序,簡訊程式等,應用軟體則由各公司自行開發,以Java作為編寫程式的一部分。
Android一詞的本義指“機器人”,最初的Android主要支援手機,後來經過開發改良,逐漸擴展到平板電腦及其他一些領域上,是首個為行動終端打造的真正的開放和完整的行動軟體。
系統架構:
Android的系統架構和其作業系統一樣,採用了分層的架構。 Android分為四個層,從高層到低層分別是應用程式層、應用程式框架層、系統運行程式庫層和Linux核心層。
一、應用程式
Android會同一系列核心應用程式套件一起發布,該應用程式套件包括客戶端,SMS短訊息程序,日曆,地圖,瀏覽器,聯絡人管理程序等。所有的應用程式都是使用JAVA語言編寫的。
二、應用程式框架
開發人員也可以完全存取核心應用程式所使用的API框架。該應用程式的架構設計簡化了組件的重用;任何一個應用程式都可以發布它的功能塊並且任何其它的應用程式都可以使用其所發布的功能塊(不過得遵循框架的安全性)。同樣,該應用程式重用機制也使用戶可以方便的替換程式元件。
三、系統運作庫
Android 包含一些C/C 函式庫,這些函式庫能被Android系統中不同的元件使用。它們透過 Android 應用程式框架為開發者提供服務。
四、Linux核心層
Android核心是基於Linux 核心的修改的核心版本,它提供了用於支援Android平台的裝置驅動程式。
系統結構:
一、系統核心
Android 是運行於Linux kernel之上,但不是GNU/Linux。因為在一般GNU/Linux 支援的功能,Android 大都沒有支持,包括Cairo、X11、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。 Android又以Bionic 取代Glibc、以Skia 取代Cairo、再以opencore取代FFmpeg等等。 Android 為了達到商業應用,必須移除被GNU GPL授權證所約束的部份,例如Android將驅動程式移到 Userspace,使得Linux driver 與 Linux kernel徹底分開。 Bionic/Libc/Kernel/ 並非標準的Kernel header files。 Android 的 Kernel header 是利用工具由 Linux Kernel header 所產生的,這樣做是為了保留常數、資料結構與巨集。
二、硬體抽象層
Android 的HAL(硬體抽象層)是能以封閉原始碼形式提供硬體驅動模組。 HAL 的目的是為了把 Android framework 與 Linux kernel 隔開,讓 Android 不至過度依賴 Linux kernel,以達成 Kernel independent 的概念,也讓 Android framework 的開發能在不考慮驅動程式實現的前提下進行發展。
三、中介軟體
作業系統與應用程式的溝通橋樑,應用程式分為兩層:函數層(Library)與虛擬機器(Virtual Machine)。 Bionic是 Android 改良libc的版本。 Android 同時包含了Webkit,所謂的Webkit 就是Apple Safari 瀏覽器背後的引擎。 Surface flinger 是就2D或3D的內容顯示到螢幕上。 Android使用工具鏈(Toolchain)為Google自製的BionicLibc。
Android採用OpenCORE作為基礎多媒體框架。 Open CORE可分7大塊:PVPlayer、PVAuthor、Codec、PacketVideo Multimedia Framework(PVMF)、Operating System Compatibility Library(OSCL)、Common、OpenMAX。
Android 使用skia 為核心圖形引擎,搭配OpenGL/ES。 skia與LinuxCairo功能相當,但相較於Linux Cairo, skia 功能還只是雛形的。 2005年Skia公司被Google收購,2007年初,Skia GL原始碼被公開,Skia也是Google Chrome 的圖形引擎。
Android的多媒體資料庫採用SQLite資料庫系統。資料庫又分為共用資料庫及私人資料庫。使用者可透過ContentResolver類別(Column)取得共用資料庫。
Android的中間層多以Java 實現,並且採用特殊的Dalvik 虛擬機器(Dalvik Virtual Machine)。 Dalvik虛擬機是一種「暫存器型態」(Register Based)的Java虛擬機,變數皆存放於暫存器中,虛擬機的指令相對減少。
Dalvik虛擬機器可以有多個實例(Instance), 每個Android應用程式都用一個自屬的Dalvik虛擬機器來運行,讓系統在運行程式時可達到最佳化。 Dalvik 虛擬機器並非執行Java字節碼(Bytecode),而是執行一種稱為.dex格式的檔案。
四、安全權限機制
Android本身就是一個權限分立的作業系統。在這類作業系統中,每個應用程式都以唯一的一個系統識別身分運作(Linux使用者ID與群組ID)。系統的各部分也分別使用各自獨立的辨識方式。 Linux就是這樣將應用程式與應用,應用程式與系統隔離。
應用程式元件:
Android開發四大元件分別是:
一、活動(Activity): 用於表現功能。
二、服務(Service): 後台運行服務,不提供介面呈現。
三、廣播接收器(BroadcastReceiver):用於接收廣播。
四、內容提供者(ContentProvider): 支援在多個應用程式中儲存和讀取數據,相當於資料庫。
相關推薦:《Linux影片教學》
以上是安卓系統也是基於Linux系統的嗎的詳細內容。更多資訊請關注PHP中文網其他相關文章!