Android簡(jiǎn)介
安卓是一種基于Linux內(nèi)核(不包含GNU組件)的自由及開(kāi)放源代碼的操作系統(tǒng)反症。主要使用于移動(dòng)設(shè)備镀首,如智能手機(jī)和平板電腦横缔,由美國(guó)Google公司和開(kāi)放手機(jī)聯(lián)盟領(lǐng)導(dǎo)及開(kāi)發(fā)纠修。
Android歷程
2003年10月祝拯,Andy Rubin等人創(chuàng)建Android公司滤愕,并組建Android團(tuán)隊(duì)温算。
2005年8月17日,Google低調(diào)收購(gòu)了成立僅22個(gè)月的高科技企業(yè)Android及其團(tuán)隊(duì)间影。安迪魯賓成為Google公司工程部副總裁注竿,繼續(xù)負(fù)責(zé)Android項(xiàng)目。
2007年11月5日,谷歌公司正式向外界展示了這款名為Android的操作系統(tǒng)巩割,并且在這天谷歌宣布建立一個(gè)全球性的聯(lián)盟組織裙顽,該組織由34家手機(jī)制造商、軟件開(kāi)發(fā)商宣谈、電信運(yùn)營(yíng)商以及芯片制造商共同組成愈犹,并與84家硬件制造商、軟件開(kāi)發(fā)商及電信營(yíng)運(yùn)商組成開(kāi)放手持設(shè)備聯(lián)盟(Open Handset Alliance)來(lái)共同研發(fā)改良Android系統(tǒng)蒲祈,這一聯(lián)盟將支持谷歌發(fā)布的手機(jī)操作系統(tǒng)以及應(yīng)用軟件甘萧,Google以Apache免費(fèi)開(kāi)源許可證的授權(quán)方式,發(fā)布了Android的源代碼梆掸。
2008年扬卷,在GoogleI/O大會(huì)上,谷歌提出了AndroidHAL架構(gòu)圖酸钦,在同年8月18號(hào)怪得,Android獲得了美國(guó)聯(lián)邦通信委員會(huì)(FCC)的批準(zhǔn),在2008年9月卑硫,谷歌正式發(fā)布了Android 1.0系統(tǒng)徒恋,這也是Android系統(tǒng)最早的版本。
2009年4月欢伏,谷歌正式推出了Android 1.5這款手機(jī)入挣,從Android 1.5版本開(kāi)始,谷歌開(kāi)始將Android的版本以甜品的名字命名硝拧,Android 1.5命名為Cupcake(紙杯蛋糕)径筏。該系統(tǒng)與Android 1.0相比有了很大的改進(jìn)。
2009年9月障陶,谷歌發(fā)布了Android 1.6的正式版滋恬,并且推出了搭載Android 1.6正式版的手機(jī)HTC Hero(G3),憑借著出色的外觀設(shè)計(jì)以及全新的Android 1.6操作系統(tǒng)抱究,HTC Hero(G3)成為當(dāng)時(shí)全球最受歡迎的手機(jī)恢氯。Android 1.6也有一個(gè)有趣的甜品名稱(chēng),它被稱(chēng)為Donut(甜甜圈)鼓寺。
2010年2月勋拟,Linux內(nèi)核開(kāi)發(fā)者Greg Kroah-Hartman將Android的驅(qū)動(dòng)程序從Linux內(nèi)核“狀態(tài)樹(shù)”(“staging tree”)上除去,從此妈候,Android與Linux開(kāi)發(fā)主流將分道揚(yáng)鑣敢靡。在同年5月份,谷歌正式發(fā)布了Android 2.2操作系統(tǒng)州丹。谷歌將Android 2.2操作系統(tǒng)命名為Froyo醋安,翻譯完名為凍酸奶。
2010年10月墓毒,谷歌宣布Android系統(tǒng)達(dá)到了第一個(gè)里程碑吓揪,即電子市場(chǎng)上獲得官方數(shù)字認(rèn)證的Android應(yīng)用數(shù)量已經(jīng)達(dá)到了10萬(wàn)個(gè),Android系統(tǒng)的應(yīng)用增長(zhǎng)非常迅速所计。在2010年12月柠辞,谷歌正式發(fā)布了Android 2.3操作系統(tǒng)Gingerbread (姜餅)。
2011年1月主胧,谷歌稱(chēng)每日的Android設(shè)備新用戶(hù)數(shù)量達(dá)到了30萬(wàn)部叭首,到2011年7月,這個(gè)數(shù)字增長(zhǎng)到55萬(wàn)部踪栋,而Android系統(tǒng)設(shè)備的用戶(hù)總數(shù)達(dá)到了1.35億焙格,Android系統(tǒng)已經(jīng)成為智能手機(jī)領(lǐng)域占有量最高的系統(tǒng)。
2011年8月2日夷都,Android手機(jī)已占據(jù)全球智能機(jī)市場(chǎng)48%的份額眷唉,并在亞太地區(qū)市場(chǎng)占據(jù)統(tǒng)治地位,終結(jié)了Symbian(塞班系統(tǒng))的霸主地位囤官,躍居全球第一冬阳。
2011年10月19日上午十點(diǎn),谷歌與三星聯(lián)手在中國(guó)香港舉辦發(fā)布會(huì)党饮,公布有關(guān)Android 4.0系統(tǒng)信息肝陪。
2013年11月1日,Android4.4正式發(fā)布刑顺,從具體功能上講氯窍,Android4.4提供了各種實(shí)用小功能,新的Android系統(tǒng)更智能捏检,添加更多的Emoji表情圖案荞驴,UI的改進(jìn)也更現(xiàn)代,如全新的HelloiOS7半透明效果贯城。
2014年6月26日發(fā)布Android 5.0 熊楼,系統(tǒng)使用一種新的Material Design設(shè)計(jì)風(fēng)格。對(duì) Android 系統(tǒng)的桌面圖標(biāo)及部件的透明度進(jìn)行的稍稍的調(diào)整能犯,并且各種桌面小部件也可以重疊擺放鲫骗。雖然調(diào)整桌面部件透明度對(duì) Android 系統(tǒng)來(lái)說(shuō)并不算什么新鮮的功能,但是加入了透明度的改進(jìn)踩晶。界面加入了五彩繽紛的顏色执泰、流暢的動(dòng)畫(huà)效果,呈現(xiàn)出一種清新的風(fēng)格渡蜻。采用這種設(shè)計(jì)的目的在于統(tǒng)一 Android 設(shè)備的外觀和使用體驗(yàn)术吝,不論是手機(jī)计济、平板還是多媒體播放器。
2015年9月30日發(fā)布Android 6.0Marshmallow(棉花糖)排苍,新系統(tǒng)的整體設(shè)計(jì)風(fēng)格依然保持扁平化的Material Design風(fēng)格沦寂。Android6.0在對(duì)軟件體驗(yàn)與運(yùn)行性能上進(jìn)行了大幅度的優(yōu)化。據(jù)測(cè)試淘衙,Android6.0可使設(shè)備續(xù)航時(shí)間提升30%传藏。
2015年,網(wǎng)絡(luò)安全公司Zimperium研究人員警告彤守,安卓(Android)存在“致命”安全漏洞,黑客發(fā)送一封彩信便能在用戶(hù)毫不知情的情況下完全控制手機(jī)毯侦。
2016年8月22日 發(fā)布Android 7.0, 提供新功能以提升性能具垫、生產(chǎn)效率和安全性侈离。通過(guò)新的系統(tǒng)行為測(cè)試您的應(yīng)用,以節(jié)省電量和內(nèi)存筝蚕。充分利用多窗口 UI霍狰、直接回復(fù)通知等功能。
2017年8月22日發(fā)布Android 8.0 (奧利奧)饰及,增加新功能:畫(huà)中畫(huà)蔗坯、通知圓點(diǎn)、通知渠道燎含、自動(dòng)填充框架宾濒、自動(dòng)調(diào)整TextView的大小、可下載字體屏箍、自適應(yīng)圖標(biāo)绘梦、快捷方式固定、廣色域色彩 WebView 功能赴魁。
2018年5月9日發(fā)布Android 9.0 Pie卸奉,通知欄樣式更改,整體設(shè)計(jì)添加了更多圓形颖御。Android 9 利用人工智能技術(shù)榄棵,讓手機(jī)可以為您提供更多幫助。現(xiàn)在潘拱,手機(jī)變得更智能疹鳄、更快,并且還可以隨著您的使用進(jìn)行調(diào)整芦岂。
2018年10月瘪弓,谷歌表示,將于2018年12月6日停止Android系統(tǒng)中的Nearby Notifications(附近通知)服務(wù)禽最,因?yàn)锳ndroid用戶(hù)收到太多的附近商家推銷(xiāo)信息的垃圾郵件腺怯。
2019年發(fā)布Android Q正式名稱(chēng)是Android 10袱饭,Google 開(kāi)始提供系統(tǒng)級(jí)的黑暗模式,大部分預(yù)裝應(yīng)用呛占、抽屜宁赤、設(shè)置菜單和 Google Feed 資訊流等界面和按鈕,都會(huì)變成以黑色為主色調(diào)栓票,就和你在 macOS Mojave 中看到的暗色界面一樣。為確保用戶(hù)隱私和安全支持新的保護(hù)措施愕够。借助高性能編解碼器走贪、更出色的生物識(shí)別技術(shù)、更快的應(yīng)用啟動(dòng)速度惑芭、Vulkan 1.1坠狡、NNAPI 1.2、可折疊設(shè)備和 5G 等更多功能擴(kuò)展遂跟!谷歌宣布Android系統(tǒng)的重大改變逃沿,不僅換了全新的logo,命名方式也變了幻锁。
由于疫情原因凯亮,谷歌宣布取消線下的開(kāi)發(fā)者大會(huì),后來(lái)又取消了線上開(kāi)發(fā)者大會(huì)哄尔,所以Android 11 將在2020年第三季度發(fā)布假消。
Android系統(tǒng)架構(gòu)
Android的系統(tǒng)架構(gòu)和其操作系統(tǒng)一樣,采用了分層的架構(gòu)岭接。從架構(gòu)圖看富拗,Android 分為五個(gè)層,從高層到低層分別是應(yīng)用程序?qū)用鳌?yīng)用程序框架層啃沪、系統(tǒng)運(yùn)行庫(kù)層、硬件抽象層和Linux內(nèi)核層窄锅。
應(yīng)用層
Android會(huì)同一系列核心應(yīng)用程序包一起發(fā)布创千,該應(yīng)用程序包包括客戶(hù)端,SMS短消息程序入偷,日歷签餐,地圖,瀏覽器盯串,聯(lián)系人管理程序等氯檐。所有的應(yīng)用程序都是使用JAVA語(yǔ)言編寫(xiě)的。
框架層
開(kāi)發(fā)人員也可以完全訪問(wèn)核心應(yīng)用程序所使用的API框架体捏。該應(yīng)用程序的架構(gòu)設(shè)計(jì)簡(jiǎn)化了組件的重用;任何一個(gè)應(yīng)用程序都可以發(fā)布它的功能塊并且任何其它的應(yīng)用程序都可以使用其所發(fā)布的功能塊(不過(guò)得遵循框架的安全性)冠摄。同樣糯崎,該應(yīng)用程序重用機(jī)制也使用戶(hù)可以方便的替換程序組件。
隱藏在每個(gè)應(yīng)用后面的是一系列的服務(wù)和系統(tǒng)河泳, 其中包括:
- 豐富而又可擴(kuò)展的視圖(Views)沃呢,可以用來(lái)構(gòu)建應(yīng)用程序, 它包括列表(Lists)拆挥,網(wǎng)格(Grids)薄霜,文本框(Text boxes),按鈕(Buttons)纸兔, 甚至可嵌入的web瀏覽器惰瓜。
- 內(nèi)容提供器(Content Providers)使得應(yīng)用程序可以訪問(wèn)另一個(gè)應(yīng)用程序的數(shù)據(jù)(如聯(lián)系人數(shù)據(jù)庫(kù)), 或者共享它們自己的數(shù)據(jù)
- 資源管理器(Resource Manager)提供 非代碼資源的訪問(wèn)汉矿,如本地字符串崎坊,圖形,和布局文件(Layout files )洲拇。
- 通知管理器 (Notification Manager) 使得應(yīng)用程序可以在狀態(tài)欄中顯示自定義的提示信息奈揍。
- 活動(dòng)管理器( Activity Manager) 用來(lái)管理應(yīng)用程序生命周期并提供常用的導(dǎo)航回退功能。
系統(tǒng)運(yùn)行庫(kù)
Android 包含一些C/C++庫(kù)赋续,這些庫(kù)能被Android系統(tǒng)中不同的組件使用男翰。它們通過(guò) Android 應(yīng)用程序框架為開(kāi)發(fā)者提供服務(wù)。以下是一些核心庫(kù):
- 系統(tǒng) C 庫(kù) - 一個(gè)從BSD繼承來(lái)的標(biāo)準(zhǔn)C系統(tǒng)函數(shù)庫(kù) Libc )纽乱, 它是專(zhuān)門(mén)為基于Embedded linux的設(shè)備定制的奏篙。
- 媒體庫(kù) - 基于PacketVideo OpenCORE;該庫(kù)支持多種常用的音頻、視頻格式回放和錄制迫淹,同時(shí)支持靜態(tài)圖像文件秘通。編碼格式包括MPEG4, H.264, MP3, AAC, AMR, JPG, PNG 。
- Surface Manager - 對(duì)顯示子系統(tǒng)的管理敛熬,并且為多個(gè)應(yīng)用程序提 供了2D和3D圖層的無(wú)縫融合肺稀。
- LibWebCore - 一個(gè)最新的web瀏覽器引擎用,支持Android瀏覽器和一個(gè)可嵌入的web視圖应民。
硬件抽像層
Android 的HAL(硬件抽像層)是能以封閉源碼形式提供硬件驅(qū)動(dòng)模塊话原。HAL 的目的是為了把 Android framework 與 Linux kernel 隔開(kāi),讓 Android 不至過(guò)度依賴(lài) Linux kernel诲锹,以達(dá)成 Kernel independent 的概念繁仁,也讓 Android framework 的開(kāi)發(fā)能在不考量驅(qū)動(dòng)程序?qū)崿F(xiàn)的前提下進(jìn)行發(fā)展。
HAL stub 是一種代理人(Proxy)的概念归园,Stub 是以 *.so 檔的形式存在黄虱。Stub 向 HAL“提供”操作函數(shù)(Operations),并由 Android runtime 向 HAL 取得 Stub 的Operations庸诱,再 Callback 這些操作函數(shù)捻浦。HAL 里包含了許多的 Stub(代理人)晤揣。Runtime 只要說(shuō)明“類(lèi)型”,即 Module ID朱灿,就可以取得操作函數(shù)昧识。
系統(tǒng)內(nèi)核層
Android 是運(yùn)行于Linux kernel之上,但并不是GNU/Linux盗扒。Android 為了達(dá)到商業(yè)應(yīng)用跪楞,必須移除被GNU GPL授權(quán)證所約束的部份,例如Android將驅(qū)動(dòng)程序移到 Userspace侣灶,使得Linux driver 與 Linux kernel徹底分開(kāi)甸祭。Android 的 Kernel header 是利用工具由 Linux Kernel header 所產(chǎn)生的,這樣做是為了保留常數(shù)炫隶、數(shù)據(jù)結(jié)構(gòu)與宏。Android 的 Linux kernel控制包括安全(Security)阎曹,存儲(chǔ)器管理(Memory Management)伪阶,程序管理(Process Management),網(wǎng)絡(luò)堆棧(Network Stack)处嫌,驅(qū)動(dòng)程序模型(Driver Model)等栅贴。
Android優(yōu)勢(shì)
開(kāi)放性
在優(yōu)勢(shì)方面,Android平臺(tái)首先就是其開(kāi)放性熏迹,開(kāi)發(fā)的平臺(tái)允許任何移動(dòng)終端廠商加入到Android聯(lián)盟中來(lái)檐薯。顯著的開(kāi)放性可以使其擁有更多的開(kāi)發(fā)者,隨著用戶(hù)和應(yīng)用的日益豐富注暗,一個(gè)嶄新的平臺(tái)也將很快走向成熟坛缕。
開(kāi)放性對(duì)于Android的發(fā)展而言,有利于積累人氣捆昏,這里的人氣包括消費(fèi)者和廠商赚楚,而對(duì)于消費(fèi)者來(lái)講,最大的受益正是豐富的軟件資源骗卜。開(kāi)放的平臺(tái)也會(huì)帶來(lái)更大競(jìng)爭(zhēng)宠页,如此一來(lái),消費(fèi)者將可以用更低的價(jià)位購(gòu)得心儀的手機(jī)寇仓。同時(shí)也可以通過(guò)一些第三方優(yōu)化過(guò)的系統(tǒng)通過(guò)刷機(jī)來(lái)實(shí)現(xiàn)更好的用戶(hù)體驗(yàn)举户,如MIUI,F(xiàn)lyme等遍烦。
豐富的硬件
這一點(diǎn)還是與Android平臺(tái)的開(kāi)放性相關(guān)俭嘁,由于Android的開(kāi)放性,眾多的廠商會(huì)推出千奇百怪服猪,功能特色各具的多種產(chǎn)品兄淫。功能上的差異和特色屯远,卻不會(huì)影響到數(shù)據(jù)同步、甚至軟件的兼容捕虽,如同從諾基亞Symbian風(fēng)格手機(jī)一下改用蘋(píng)果iPhone慨丐,同時(shí)還可將Symbian中優(yōu)秀的軟件帶到iPhone上使用、聯(lián)系人等資料更是可以方便地轉(zhuǎn)移泄私。
方便開(kāi)發(fā)
Android平臺(tái)提供給第三方開(kāi)發(fā)商一個(gè)十分寬泛房揭、自由的環(huán)境,不會(huì)受到各種條條框框的阻擾晌端,可想而知捅暴,會(huì)有多少新穎別致的軟件會(huì)誕生。但也有其兩面性咧纠,血腥蓬痒、暴力、情色方面的程序和游戲如何控制正是留給Android難題之一漆羔。
Google應(yīng)用
在互聯(lián)網(wǎng)的Google已經(jīng)走過(guò)10年度歷史梧奢,從搜索巨人到全面的互聯(lián)網(wǎng)滲透,Google服務(wù)如地圖演痒、郵件亲轨、搜索等已經(jīng)成為連接用戶(hù)和互聯(lián)網(wǎng)的重要紐帶,而Android平臺(tái)手機(jī)將無(wú)縫結(jié)合這些優(yōu)秀的Google服務(wù)鸟顺。
展望
2017年 Google I/O大會(huì)上 Kotlin被 Google飲定為 Android開(kāi)發(fā)的一等語(yǔ)言,和Java有同樣的優(yōu)先度,為這個(gè)已經(jīng)有相當(dāng)長(zhǎng)歷史的JVM語(yǔ)言帶來(lái)了新的春天
平臺(tái)支持的角度看惦蚊,Jetbrains同時(shí)作為 Android官方IDE- Android Studio的開(kāi)發(fā)公司,也保證了 Kotlin的 Android開(kāi)發(fā)體驗(yàn)讯嫂, Android Studio3.0中已經(jīng)默認(rèn)集成了 Kotlin的相關(guān)支持組件蹦锋,并且在 Kotlin- Android方面了非常多的工作,尤其是Anko等框架確實(shí)解決了 Android開(kāi)發(fā)中的很多難題欧芽。
語(yǔ)言本身看晕粪、 Kotlin作為一門(mén)在JVM上運(yùn)行的現(xiàn)代編程語(yǔ)言,憑借其無(wú)縫兼容Java的優(yōu)勢(shì)渐裸,以及簡(jiǎn)潔安全的現(xiàn)代風(fēng)格在 Android開(kāi)發(fā)上大放異彩巫湘。 Kotlin可以兼容一切歷史Java代碼,降低了遷移成本昏鹃。相比JVM已有的其他語(yǔ)言尚氛, Kotlin也有著很多優(yōu)勢(shì),Kotlin還解決了Java中棘手的空安全問(wèn)題洞渤,以及其他諸多痛點(diǎn)阅嘶。在無(wú)法遷移到高版本Java環(huán)境的情況下,Kotlin也提供了 Lambda等高級(jí)功能。
如果你是一名 Android開(kāi)發(fā)新手讯柔,接下來(lái)我們可以一起學(xué)習(xí)掌握 Android App開(kāi)發(fā)基本能力抡蛙。如果你是一名熟練的 Android開(kāi)發(fā)人員也可以通過(guò)這部分的內(nèi)容了解 Kotlin在 Android開(kāi)發(fā)中與Java的異同,獲得更多的啟發(fā)魂迄。
現(xiàn)在我們就可以開(kāi)始 Android開(kāi)發(fā)之旅粗截。