Android(['?ndr?id])是一個以Linux為基礎的半開源操作系統,主要用于移動設備,由Google和開放手持設備聯盟開發與領導。 Android 系統" />
更新時間:2024-04-06 18:39:24作者:admin3
android - 以Linux為基礎的操作系統
Android(['?ndr?id])是一個以Linux為基礎的半開源操作系統,主要用于移動設備,由Google和開放手持設備聯盟開發與領導。 Android 系統最初由安迪·魯賓(Andy Rubin)制作,最初主要支持手機。2005年8月17日被Google收購。2007年11月5日,Google與84家硬件制造商、軟件開發商及電信營運商組成開放手持設備聯盟(Open Handset Alliance)來共同研發改良Android系統并生產搭載Android的智慧型手機,并逐漸拓展到平板電腦及其他領域上。隨后,Google以Apache免費開源許可證的授權方式,發布了Android的源代碼。
一、系統介紹
Android是一種以Linux與JAVA為基礎的開放源代碼操作系統,主要使用于便攜設備。中國大陸地區較多人使用“安卓”。Android操作系統最初由Andy Rubin開發,被谷歌收購后則由Google公司和開放手機聯盟領導及開發,主要支持手機與平板。
二、系統特點
【系統內核 】
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 的 Linux kernel控制包括安全(Security),存儲器管理(Memory Management),程序管理(Process Management),網絡堆棧(Network Stack),驅動程序模型(Driver Model)等。下載Android源碼之前,先要安裝其構建工具 Repo來初始化源碼。Repo 是 Android 用來輔助Git工作的一個工具。
【硬件抽象層】
Android 的 HAL(硬件抽像層)是能以封閉源碼形式提供硬件驅動模塊。HAL 的目的是為了把 Android framework 與 Linux kernel 隔開,讓 Android 不至過度依賴 Linux kernel,以達成 kernel independent 的概念,也讓 Android framework 的開發能在不考量驅動程序實現的前提下進行發展。
HAL stub 是一種代理人(proxy)的概念,stub 是以 *.so 檔的形式存在。Stub 向 HAL“提供”操作函數(operations),并由 Android runtime 向 HAL 取得 stub 的 operations,再 callback 這些操作函數。HAL 里包含了許多的 stub(代理人)。Runtime 只要說明“類型”,即 module ID,就可以取得操作函數。