Android/简介

Android/简介

使用Android瀏覽器閱讀維基百科

日本DoCoMo SH10B的特製化Android

HTC Sense的待機畫面,圖中宏達電Hero機背面還印有Google授權字樣

應用程式

编辑

Android以Linux為核心的Android行动平台,使用Java作為编程语言,使介面到功能,都有层出不穷的变化,其中Activity等同于J2ME的MIDlet,一个Activity类别负责建立视窗,一个活动中的Activity就是在foreground(前景)模式,背景执行的程序叫做Service。两者之间透过由ServiceConnection和AIDL连结,达到複数程序同时执行的效果。如果执行中的Activity全部画面被其他Activity取代时,该Activity便被停止,甚至被系统清除。

View等同于J2ME的Displayable,程式人员可以透过View类别与“XML layout”档将UI放置在视窗上,Android 1.5的版本可以利用View打造出所谓的Widgets,其实Widget只是View的一种,所以可以使用xml来设计layout,HTC的Android Hero智慧型手機即含有大量的widget。至于ViewGroup是各种layout的基础抽象类别,ViewGroup之内还可以有ViewGroup。View的构造函数不需要在Activity中调用,但是Displayable的是必须的,在Activity中,要通过findViewById()来从XML中取得View,Android的View类的显示很大程度上是从XML中读取的。View与事件息息相关,两者之间透过Listener结合在一起,每一个View都可以注册一个event listener,例如:当View要处理使用者触碰的事件时,就要向Android框架注册View.OnClickListener。另外还有Image等同于J2ME的BitMap。

中介软件

编辑

作業系統与應用程式的沟通桥樑,并用分為两层:函式层和虚拟机器。

Bionic是Android改良libc的版本。Android同时包含了Webkit,所谓的Webkit就是Google 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為核心图形引擎,搭配OpenGL/ES。Skia与Linux Cairo功能相当,但相较于Linux Cairo, Skia功能还只是阳春型的。2005年Skia公司被Google收购,2007年初,Skia GL源码被公开,目前Skia也是Google Chrome的图形引擎。

Android的多媒体资料库采用SQLite资料库系统。资料库又分為共用资料库及私用资料库。使用者可透过ContentResolver类别取得共用资料库。

Android的中间层多以Java实作,并且采用特殊的Dalvik虚拟机器。Dalvik虚拟机器是一种“暂存器型态”的Java虚拟机器,变数皆存放于暂存器中,虚拟机器的指令相对减少。

Dalvik虚拟机器可以有多个实例,每个Android應用程式都用一个自属的Dalvik虚拟机器来执行,让系统在执行程式时可达到最佳化。Dalvik虚拟机器并非执行Java字节码,而是执行一种称為.dex格式的档案。

硬體抽像層

编辑

Android的硬體抽像層是能以封闭源码形式提供硬體驅動模組。HAL的目的是為了把Android framework与Linux kernel隔开,让Android不至过度依赖Linux kernel,以达成kernel independent的概念,也让Android framework的开发能在不考量驅動程式实作的前提下进行发展。

HAL stub是一种代理人的概念,stub是以*.so档的形式存在。Stub向HAL“提供”操作函数,并由Android runtime向HAL取得stub的operations,再callback这些操作函数。HAL里包含了许多的stub(代理人)。Runtime只要说明“类型”,即module ID,就可以取得操作函数。

程式語言

编辑

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 並沒有 user space driver 這種東西。所有的Driver 還是在 Kernel space,並以 HAL 隔開版權問題。bionic/libc/kernel/ 并非标準的kernel header files。Android的kernel header是利用工具由Linux kernel header所产生的,这样做是為了保留常数、资料结构与巨集。

Android的內核基於Linux,除了內核之外,則是中介層、資料庫元和用C/C++編寫的API以及應用程式框架。Android的應用程序通常以Java資料庫元為基礎編寫,運行程序時,應用程式的代碼會被即時轉變為Dalvik dex-code (Dalvik Executable),然後Android作業系統通過使用即時編譯的Dalvik虛擬機來將其運行。[64]

目前Android的Linux kernel控制包括安全、記憶體管理、进程管理、网络堆叠、驅動程式模型等。下载Android源码之前,先要安装其构建工具Repo来初始化源码。Repo是Android用来辅助Git工作的一个工具。

专利纠纷

编辑

《PC世界》杂志网站2011年9月22日报道,Android已卷入1000多件专利诉讼。2011年8月,Google斥资125亿美元收购摩托罗拉移动及其拥有的约2.45万份专利组合[65]。

养生小贴士

璀璨巨龙!八达岭夜长城南城常态化开放
💡 小知识

璀璨巨龙!八达岭夜长城南城常态化开放

📅 07-07 👍 459
奥尔良烤翅的做法
💡 小知识

奥尔良烤翅的做法

📅 07-28 👍 518
自制硫酸!!!
💡 小知识

自制硫酸!!!

📅 07-30 👍 105