编辑“︁
Android
”︁(章节)
跳转到导航
跳转到搜索
Template:Editnotice load/content
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
== 系統架構 == === 中介软件 === 作業系統與應用程式的溝通橋樑,並用分為兩層:[[函式]]層和[[虛擬機器]]。 [[Bionic (軟體)|Bionic]]是Android改良libc的版本。Android包含了Chrome流覽器引擎。Surface flinger是就2D或3D的內容顯示到螢幕上。Android使用工具鏈為Google自制的Bionic Libc。 Android採用OpenCORE作為基礎多媒體框架。OpenCORE可分7大塊:PVPlayer、PVAuthor、Codec、PacketVideo Multimedia Framework(PVMF)、Operating System Compatibility Library(OSCL)、Common、OpenMAX。 Android使用[[Skia Graphics Library|Skia]]為核心圖形引擎,搭配OpenGL/ES。Skia與Linux Cairo功能相當,但相較於Linux Cairo,Skia功能還只是陽春型的。2005年Skia公司被Google收購,2007年初,Skia GL源碼被公開,目前Skia也是Google Chrome的圖形引擎。 Android的多媒體資料庫採用[[SQLite]]資料庫系統。資料庫又分為共用資料庫及私用資料庫。使用者可透過ContentProvider類別取得共用資料庫。 Android的中間層多以Java實作,4.4版之前使用特殊的[[Dalvik虛擬機|Dalvik虛擬機器]]。Dalvik虛擬機器是一種“暫存器型態”的Java虛擬機器,變數皆存放於[[暫存器]]中,虛擬機器的指令相對減少。5.0版起改用[[Android Runtime]](ART)。 Dalvik虛擬機器可以有多個實例,每個Android應用程式都用一個自屬的Dalvik虛擬機器來執行,讓系統在執行程式時可達到最佳化。Dalvik虛擬機器並非執行Java字節碼,而是執行一種稱為.dex格式的檔案。 === 硬體抽象層(HAL) === Android的硬體抽象層是能以封閉源碼形式提供硬體驅動模組。HAL的目的是為了把Android framework與Linux kernel隔開,讓Android不至過度依賴Linux kernel,以達成“內核獨立”(kernel independent)的概念,也讓Android framework的開發能在不考量驅動程式實作的前提下進行發展,以達到壟斷GPU市場的目的。 HAL stub是一种代理人的概念,stub是以*.so档的形式存在。Stub向HAL“提供”操作函数,并由Android runtime向HAL取得stub的操作,再[[回调函数|回调]]这些操作函数。HAL里包含了许多的stub(代理人)。Runtime只要说明“类型”,即module ID,就可以取得操作函数。 === 程式語言 === Android是執行於[[Linux kernel]]之上,但並不是[[GNU/Linux]]。因為在一般GNU/Linux裏支持的功能,Android大都沒有支援,包括[[Cairo (繪圖)|Cairo]]、[[X視窗系統|X11]]、[[ALSA|Alsa]]、[[FFmpeg]]、[[GTK]]、[[Pango]]及[[Glibc]]等都被移除掉了。Android又以bionic取代Glibc、以Skia取代Cairo、再以OpenCORE取代FFmpeg等等。Android為了達到商業應用,必須移除被[[GNU GPL]]授權證所約束的部份,Android並沒有用戶層驅動(user space driver)這種東西。所有的驅動還是在內核空間中,並以[[硬體抽象層|HAL]]隔開版權問題。bionic/libc/kernel/ 並非標準的內核頭文件(kernel header files)。Android的內核頭文件是利用工具由Linux內核的頭文件所產生的,這樣做是為了保留常數、資料結構與巨集。 Android的核心基於[[Linux]],除了核心之外,則是中介層、資料庫元和用[[C/C++]]編寫的[[API]]以及應用程式框架。Android的應用程序通常以[[Java]]資料庫元為基礎編寫,運行程序時,應用程式的代碼會被即時轉變為Dalvik dex-code(Dalvik Executable),然後Android作業系統通過使用即時編譯的Dalvik虛擬機來將其運行。<ref>{{cite web|url=http://www.tbray.org/ongoing/When/201x/2010/11/14/What-Android-Is|title=What Android Is|author=Tim Bray|work=ongoing by Tim Bray|date=2010-11-24|accessdate=2011-10-27|archive-url=https://web.archive.org/web/20111031160241/http://www.tbray.org/ongoing/When/201x/2010/11/14/What-Android-Is|archive-date=2011-10-31|dead-url=no}}</ref> 目前Android的Linux kernel控制包括安全、[[記憶體管理]]、[[進程管理]]、[[網路堆疊]]、[[驅動程式模型]]等。下載Android源碼之前,先要安裝其構建工具[[Repo (腳本)|Repo]]來初始化源碼。Repo是Android用來輔助[[Git]]工作的一個工具。
摘要:
请注意,所有对Local Chinese Wikipedia的贡献均可能会被其他贡献者编辑、修改或删除。如果您不希望您的文字作品被随意编辑,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源(详情请见
Project:著作权
)。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)
导航菜单
个人工具
未登录
讨论
贡献
创建账号
登录
命名空间
页面
讨论
大陆简体
不转换
简体
繁體
大陆简体
香港繁體
澳門繁體
大马简体
新加坡简体
臺灣正體
查看
阅读
编辑
查看历史
更多
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息