Android系列教程以前言

內容轉載自我本身的博客
目前安卓的主流開發語言是Java,在正式開始Android系列的教程以前,須要知道一些基本內容html

Android介紹

Android['ændrɔid] 是一個基於Linux 內核的開放源代碼移動操做系統,由Google 成立的Open Handset Alliance(OHA,開放手持設備聯盟)持續領導與開發,主要設計用於觸屏移動設備如智能手機和平板電腦與其餘便攜式設備
Android 一詞最先出現於法國做家利爾亞當(Auguste Villiers de l'Isle-Adam)在1886年發表的科幻小說《將來夏娃》(L'Ève future)中,他將外表像人的機器人取名爲Android 。 Android 是一個全身綠色的機器人,顏色採用了PMS 376C和RGB 中十六進制的#A4C639來繪製,這是Android 操做系統的品牌象徵
Android OS(Operating System)使用開放免費代碼許可證,一切代碼爲公開免費的。Google 將Android 的大部分以Apache開源條款2.0 發佈,剩下的Linux內核部分則繼承GPLv2 許可
Android 操做系統是徹底免費開源的,任何廠商都不須通過Google 和開放手持設備聯盟的受權隨意使用Android 操做系統
2005年7月11日,Google 收購了Android 科技公司,Android 科技公司成爲Google 旗下的一部分linux

設計架構

Linux內核

Android OS 的核心屬於Linux 內核的一個分支,具備典型的Linux 調度和功能。除此以外,Google 爲了能讓Linux 在移動設備上良好的運行,對其進行了修改和擴充。Android 去除了Linux 中的本地X Window System ,也不支持標準的GNU 庫,這使得Linux 平臺上的應用程序移植到Android 平臺上變得困難android

應用程序

Android 系統是基於Linux 內核開發,使用Java 做編程語言,使界面到功能,都有層出不窮的變化。Activity 類負責建立視窗,一個活動中的Activity 就是處於Foreground 模式,而在Background 執行的程序通常叫作Service 。二者之間透過ServiceConnection 和AIDL 連結,達到多個程序同時執行的效果。若是執行中的Activity 所有畫面被其餘Activity 取代時,該Activity 便被暫停,放入回退棧中
View 是視圖,能夠透過View 類與「XML layout」 將UI 放置在視窗上,並能夠利用View 打造出所謂的Widgets ,其實Widget 只是View 的一種,因此可使用xml 來設計layout 。至於ViewGroup 是各類layout 的基礎抽象類別,ViewGroup 以內還能夠有ViewGroup 。View 的構造函數不須要在Activity 中調用,可是Displayable 的是必須的,在Activity 中,要經過findViewById() 來從XML 中獲取View ,Android 的View 類的顯示很大程度上是從XML 中讀取的。View 與事件息息相關,二者之間透過Listener 結合在一塊兒,每個View 均可以註冊event listener ,例如:當View 要處理用戶觸碰的事件時,就要向Android 框架註冊View.OnClickListenerapache

HAL(硬件抽象層)

Android 的硬件抽像層是能以封閉源碼形式提供硬件驅動模塊。HAL 的目的是爲了把Android framework 與Linux kernel 隔開,讓Android 不至過分依賴Linux kernel 。安卓
HAL stub 是一種代理人的概念,stub(代理人) 是以*.so 檔的形式存在。Stub 向HAL 「提供」操做函數,並由Android runtime 向HAL 獲取stub 的操做,再回調這些操做函數。HAL 裏包含了許多的stub 。Runtime 只要說明「類型」,即module ID ,就能夠獲取操做函數編程

虛擬機

虛擬機是操做系統與應用程序的溝通橋樑,4.4版以前使用特殊的Dalvik 虛擬機器,5.0版起改用Android Runtime(ART)。下面主要介紹ART :它是一種在Android 操做系統上的運行環境,由Google 公司研發,並在2013年做爲Android 4.4 系統中的一項測試功能正式對外發布,在Android 5.0 及後續Android 版本中做爲正式的運行時庫取代了以往的Dalvik 虛擬機。ART 可以把應用程序的字節碼轉換爲機器碼,是Android 所使用的一種新的虛擬機。ART與JIT對比圖
它與Dalvik 的主要不一樣在於:Dalvik 採用的是JIT 技術,而ART 採用Ahead-of-time(AOT) 技術。ART 同時也改善了性能、垃圾回收(Garbage Collection)、應用程序除錯以及性能分析
JIT 最先在Android 2.2 系統中引進到Dalvik 虛擬機中,在應用程序啓動時,JIT 經過進行連續的性能分析來優化程序代碼的執行,在程序運行的過程當中,Dalvik 虛擬機在不斷的進行將字節碼編譯成機器碼的工做。與Dalvik 虛擬機不一樣的是,ART 引入了AOT 這種預編譯技術,在應用程序安裝的過程當中,ART 就已經將全部的字節碼從新編譯成了機器碼。應用程序運行過程當中無需進行實時的編譯工做,只須要進行直接調用
ART 極大的提升了應用程序的運行效率,同時也減小了手機的電量消耗,提升了移動設備的續航能力,在垃圾回收等機制上也有了較大的提高。爲了保證向下兼容,ART 使用了相同的Dalvik字節碼文件(dex),即在應用程序目錄下保留了dex 文件供舊程序調用然而.odex 文件則替換成了可執行與可連接格式(ELF)可執行文件。一旦一個程序被ART 的dex2oat 命令編譯,那麼這個程序將會指經過ELF 可執行文件來運行。所以,相對於Dalvik 虛擬機模式,ART 模式下Android 應用程序的安裝須要消耗更多的時間,同時也會佔用更大的儲存空間(指內部儲存,用於儲存編譯後的代碼),但節省了不少Dalvik 虛擬機用於實時編譯的時間安全

安全機制

Android 操做系統使用了沙箱(SandBox)機制,全部的應用程序都會先被簡單地解壓縮到沙箱中進行檢查,而且將應用程序所需的權限提交給系統,而且將其所需權限以列表的形式展示出來,供用戶查看。用戶能夠根據權限來考慮本身是否須要安裝,只有在用戶贊成了應用程序權限以後,才能進行安裝。普通用戶只能在應用程序安裝時確認並確定容許程序申請相應權限以繼續安裝或拒絕安裝;應用程序開發商也會可能申請程序並沒必要需的權限,或者申請使用涉及用戶隱私的權限並暗中收集、使用、發送用戶隱私數據回開發商服務器用於信息收集。從Android 6.0 開始,系統啓用原生應用程序權限控制,容許程序安裝後仍能對特定類別的權限使用進行啓閉,若是應用程序的某組權限使用被關閉並準備訪問相應權限控制對應的方法時系統會詢問用戶是否容許服務器

專利糾紛

Android 所使用的開發語言平臺Java 是Oracle(甲骨文)公司研製的,早在2010年8月,Oracle 就開始對Google 無受權使用Java 語言實現侵犯了公司的專利在美國加州北區地方法院提起控訴,接下來的六年間,二者打了不少場官司,不分勝負。2016年8月22日,Google 在最新的Android 7.0 Nougat 中,將專利的JDK 替換成開源方案的OpenJDK ,以完全解決Java 的專利問題架構

發行版本

API以及版本號、英文代號、中文代號、以及發佈時間以下:框架

API 版本號 代號(英) 代號(中) 日期
01 1.0 2008.09.23
02 1.1 Petit Four 花色小蛋糕 2009.02.02
03 1.5 Cupcake 紙杯蛋糕 2009.04.30
04 1.6 Donut 甜甜圈 2009.09.15
05 2.0 Éclair 鬆餅 2009.10.26
06 2.0.1 Éclair 鬆餅 2009.12.03
07 2.1 Éclair 鬆餅 2010.01.12
08 2.2.0-2.2.3 Froyo 凍酸奶 2010.05.20
09 2.3.0-2.3.2 Gingerbread 薑餅 2010.12.07
10 2.3.3-2.3.7 Gingerbread 薑餅 2011.09.02
11 3.0 Honeycomb 蜂巢 2011.02.02
12 3.1 Honeycomb 蜂巢 2011.05.10
13 3.2 Honeycomb 蜂巢 2011.07.15
14 4.0.0-4.0.2 Ice Cream Sandwich 冰淇淋三明治 2011.10.19
15 4.0.3-4.0.4 Ice Cream Sandwich 冰淇淋三明治 2012.02.06
16 4.1 Jelly Bean 果凍豆 2012.06.28
17 4.2 Jelly Bean 果凍豆 2012.10.30
18 4.3 Jelly Bean 果凍豆 2013.07.25
19 4.4.0 KitKat 奇巧 2013.10.31
20 4.4.4 KitKat Watch 奇巧 2014.06.20
21 5.0 Lollipop 棒棒糖 2014.10.16
22 5.1 Lollipop 棒棒糖 2015.03.10
23 6.0 Marshmallow 棉花糖 2015.10.05
24 7.0 Nougat 牛軋糖 2016.08.22
25 7.1 Nougat 牛軋糖 2016.10.04
26 8.0 Oreo 奧利奧 2017.08.21
27 8.1 Oreo 奧利奧 2017.12.05
28 9 Pie 2018.08.06

常見分支版本

LineageOS、YunOS、Fire OS、360OS、Flyme OS、Funtouch OS、氫OS、LeWa OS、XobotOS、Resurrection Remix OS、MIUI(米柚)、華爲EMUI、Zen UI、Hive UI、LG Optimus UI、HTC Sense、三星TouchWiz、MoKee(魔趣)、Nokia X Software Platform、OPhone、AOKP、Baidu Yi、Barnes & Noble Nook、CyanogenMod、Replicant、OmniROM編程語言

相關文章
相關標籤/搜索