共找到2條詞條名為android的結果 展開
- 美國谷歌公司開發的移動操作系統
- 東方神起日文35單
android
美國谷歌公司開發的移動操作系統
Android是一種基於Linux的自由及開放源代碼的操作系統。主要使用於移動設備,如智能手機和平板電腦,由Google(谷歌)公司和開放手機聯盟領導及開發。尚未有統一中文名稱,中國大陸地區較多人使用“安卓”或“安致”。Android操作系統最初由Andy Rubin開發,主要支持手機。2005年8月由Google收購注資。2007年11月,Google與84家硬體製造商、軟體開發商及電信營運商組建開放手機聯盟共同研發改良Android系統。隨後Google以Apache開源許可證的授權方式,發布了Android的源代碼。第一部Android智能手機發佈於2008年10月。Android逐漸擴展到平板電腦及其他領域上,如電視、數碼相機、遊戲機、智能手錶等。2011年第一季度,Android在全球的市場份額首次超過塞班系統,躍居全球第一。 2013年的第四季度,Android平台手機的全球市場份額已經達到78.1%。 2013年09月24日谷歌開發的操作系統Android在迎來了5歲生日,全世界採用這款系統的設備數量已經達到10億台。
2014第一季度Android平台已佔所有移動廣告流量來源的42.8%,首度超越iOS。但運營收入不及iOS。
Android logo相關圖片
Android一詞最早出現於法國作家利爾亞當(Auguste Villiers de l'Isle-Adam)在1886年發表的科幻小說《未來夏娃》(L'ève future)中。他將外表像人的機器起名為Android。
Android的Logo是由Ascender公司設計的,誕生於2010年,其設計靈感源於男女廁所門上的圖形符號,於是布洛克繪製了一個簡單的機器人,它的軀幹就像錫罐的形狀,頭上還有兩根天線,Android小機器人便誕生了。其中的文字使用了Ascender公司專門製作的稱之為“Droid ”的字體。Android是一個全身綠色的機器人,綠色也是Android的標誌。顏色採用了PMS 376C和RGB中十六進位的#A4C639來繪製,這是Android操作系統的品牌象徵。有時候,它們還會使用純文字的Logo。
2012年7月美國科技博客網站BusinessInsider評選出二十一世紀十款最重要電子產品,Android操作系統和iPhone等榜上有名。
(Android logo 相關圖片相冊圖片來源:)
2003年10月,Andy Rubin等人創建Android公司,並組建Android團隊。
2005年8月17日,Google低調收購了成立僅22個月的高科技企業Android及其團隊。安迪魯賓成為Google公司工程部副總裁,繼續負責Android項目。
2007年11月5日,谷歌公司正式向外界展示了這款名為Android的操作系統,並且在這天谷歌宣布建立一個全球性的聯盟組織,該組織由34家手機製造商、軟體開發商、電信運營商以及晶元製造商共同組成,並與84家硬體製造商、軟體開發商及電信營運商組成開放手持設備聯盟(Open Handset Alliance)來共同研發改良Android系統,這一聯盟將支持谷歌發布的手機操作系統以及應用軟體,Google以Apache免費開源許可證的授權方式,發布了Android的源代碼。
2008年,在GoogleI/O大會上,谷歌提出了AndroidHAL架構圖,在同年8月18號,Android獲得了美國聯邦通信委員會(FCC)的批准,在2008年9月,谷歌正式發布了Android 1.0系統,這也是Android系統最早的版本。
2009年4月,谷歌正式推出了Android 1.5這款手機,從Android 1.5版本開始,谷歌開始將Android的版本以甜品的名字命名,Android 1.5命名為Cupcake(紙杯蛋糕)。該系統與Android 1.0相比有了很大的改進。
2009年9月份,谷歌發布了Android 1.6的正式版,並且推出了搭載Android 1.6正式版的手機HTC Hero(G3),憑藉著出色的外觀設計以及全新的Android 1.6操作系統,HTC Hero(G3)成為當時全球最受歡迎的手機。Android 1.6也有一個有趣的甜品名稱,它被稱為Donut(甜甜圈)。
安卓各個版本在市場受歡迎度
2010年10月份,谷歌宣布Android系統達到了第一個里程碑,即電子市場上獲得官方數字認證的Android應用數量已經達到了10萬個,Android系統的應用增長非常迅速。在2010年12月,谷歌正式發布了Android 2.3操作系統Gingerbread (薑餅)。
2011年1月,谷歌稱每日的Android設備新用戶數量達到了30萬部,到2011年7月,這個數字增長到55萬部,而Android系統設備的用戶總數達到了1.35億,Android系統已經成為智能手機領域佔有量最高的系統。
2011年8月2日,Android手機已佔據全球智能機市場48%的份額,並在亞太地區市場佔據統治地位,終結了Symbian(塞班系統)的霸主地位,躍居全球第一。
2011年9月份,Android系統的應用數目已經達到了48萬,而在智能手機市場,Android系統的佔有率已經達到了43%。繼續在排在移動操作系統首位。谷歌將會發布全新的Android 4.0操作系統,這款系統被谷歌命名為Ice Cream Sandwich(冰激凌三明治)。
2012年1月6日,谷歌Android Market已有10萬開發者推出超過40萬活躍的應用,大多數的應用程序為免費。Android Market應用程序商店目錄在新年首周周末突破40萬基準,距離突破30萬應用僅4個月。在2011年早些時候,Android Market從20萬增加到30萬應用也花了四個月。
2013年11月1日,Android4.4正式發布,從具體功能上講,Android4.4提供了各種實用小功能,新的Android系統更智能,添加更多的Emoji表情圖案,UI的改進也更現代,如全新的HelloiOS7半透明效果。
2015年27日,網路安全公司Zimperium研究人員警告,安卓(Android)存在“致命”安全漏洞,黑客發送一封彩信便能在用戶毫不知情的情況下完全控制手機。
2018年10月,谷歌表示,將於2018年12月6日停止Android系統中的Nearby Notifications(附近通知)服務,因為Android用戶收到太多的附近商家推銷信息的垃圾郵件。
2020年3月,新更新已經提供了CVE-2020-0069補丁來解決針對聯發科晶元的一個嚴重安全漏洞。
2020年9月9日,谷歌宣布推出Android 11正式版,主要加強了聊天氣泡、安全隱私、電源菜單,以及對瀑布屏、摺疊屏、雙屏的支持。
2020年11月底,Android Messages推行的端到端加密(E2EE)功能在測試版上線。
2021年5月,谷歌宣布Android 12正式到來,測試版可供下載,包括Google Pixel、小米等特定設備。
2021年6月15日消息,安卓官方發布一則宣傳短片,宣布旗下應用Android Messages即將全面推行端到端加密(E2EE)功能。
Android 各代版本 Logo
2008年9月發布的Android第一版。
Cupcake(紙杯蛋糕):2009年4月30日發布。
主要的更新如下:
拍攝/播放影片,並支持上傳到Youtube;支持立體聲藍牙耳機,同時改善自動配對性能;最新的採用WebKit技術的瀏覽器,支持複製/貼上和頁面中搜索;GPS性能大大提高;提供屏幕虛擬鍵盤;主屏幕增加音樂播放器和相框widgets;應用程序自動隨著手機旋轉;簡訊、Gmail、日曆,瀏覽器的用戶介面大幅改進,如Gmail可以批量刪除郵件;相機啟動速度加快,拍攝圖片可以直接上傳到Picasa;來電照片顯示。
Donut(甜甜圈):2009年9月15日發布。
主要的更新如下:
重新設計的Android Market手勢;支持CDMA網路;文字轉語音系統(Text-to-Speech);快速搜索框;全新的拍照介面;查看應用程序耗電;支持虛擬私人網路(VPN);支持更多的屏幕解析度;支持OpenCore2媒體引擎;新增面向視覺或聽覺困難人群的易用性插件。
2009年10月26日發布。
主要的更新如下:
優化硬體速度;"Car Home"程序;支持更多的屏幕解析度;改良的用戶界面;新的瀏覽器的用戶介面和支持HTML5;新的聯繫人名單;更好的白色/黑色背景比率;改進Google Maps3.1.2;支持Microsoft Exchange;支持內置相機閃光燈;支持數碼變焦;改進的虛擬鍵盤;支持藍牙2.1;支持動態桌面的設計。
Android 2.2/2.2.1 Froyo(凍酸奶) :2010年5月20日發布。主要的更新如下:
整體性能大幅度的提升;3G網路共享功能;Flash的支持;App2sd功能;全新的軟體商店;更多的Web應用API介面的開發。
2009年10月26日發布。
主要更新:
優化硬體速度;"Car Home"程序;支持更多的屏幕解析度;改良的用戶界面;新的瀏覽器的用戶介面和支持HTML5;新的聯繫人名單;更好的白色/黑色背景比率;改進Google Maps3.1.2;支持Microsoft Exchange;支持內置相機閃光燈;支持數碼變焦;改進的虛擬鍵盤;支持藍牙2.1;支持動態桌面的設計。
主詞條:Android 2.2
Froyo(凍酸奶):2010年5月20日發布。
主要更新:
整體性能大幅度的提升;3G網路共享功能;Flash的支持;App2sd功能;全新的軟體商店;更多的Web應用API介面的開發。
Gingerbread(薑餅) :2010年12月7日發布。
主要的更新如下:
增加了新的垃圾回收和優化處理事件;原生代碼可直接存取輸入和感應器事件、EGL/OpenGLES、OpenSL ES;新的管理窗口和生命周期的框架;支持VP8和WebM視頻格式,提供AAC和AMR寬頻編碼,提供了新的音頻效果器;支持前置攝像頭、SIP/VOIP和NFC(近場通訊);簡化界面、速度提升;更快更直觀的文字輸入;一鍵文字選擇和複製/粘帖;改進的電源管理系統;新的應用管理方式。
Honeycomb(蜂巢):2011年2月2日發布。
主要更新如下:
優化針對平板;全新設計的UI增強網頁瀏覽功能;in-app purchases功能。
Honeycomb(蜂巢) :2011年5月11日布發布。
版本主要更新如下:
經過優化的Gmail電子郵箱;全面支持Google Maps ;將Android手機系統跟平板系統再次合併從而方便開發者;任務管理器可滾動,支持USB輸入設備(鍵盤、滑鼠等) ;支持Google TV.可以支持XBOX 360無線手柄;widget支持的變化,能更加容易的定製屏幕widget插件。
Honeycomb(蜂巢):2011年7月13日發布。
版本更新如下:
支持7英寸設備;引入了應用顯示縮放功能。
Ice Cream Sandwich(冰激凌三明治):2011年10月19日在香港發布。
版本主要更新如下:
全新的UI;全新的Chrome Lite瀏覽器,有離線閱讀,16標籤頁,隱身瀏覽模式等;截圖功能;更強大的圖片編輯功能;自帶照片應用堪比Instagram,可以加濾鏡、加相框,進行360度全景拍攝,照片還能根據地點來排序;Gmail加入手勢、離線搜索功能,UI更強大;新功能People:以聯繫人照片為核心,界面偏重滑動而非點擊,集成了Twitter、Linkedin、Google+等通訊工具。有望支持用戶自定義添加第三方服務;新增流量管理工具,可具體查看每個應用產生的流量,限制使用流量,到達設置標準后自動斷開網路。
Android 4.1Jelly Bean(果凍豆):2012年6月28日
新特性:
更快、更流暢、更靈敏;特效動畫的幀速提高至60fps,增加了三倍緩衝;增強通知欄;全新搜索;搜索將會帶來全新的UI、智能語音搜索和Google Now三項新功能;桌面插件自動調整大小;加強無障礙操作;語言和輸入法擴展;新的輸入類型和功能;新的連接類型。
Android 4.2Jelly Bean(果凍豆):2012年10月30日
Android 4.2沿用“果凍豆”這一名稱,以反映這種最新操作系統與Android 4.1的相似性,但Android 4.2推出了一些重大的新特性,具體如下:
Photo Sphere全景拍照功能;鍵盤手勢輸入功能;改進鎖屏功能,包括鎖屏狀態下支持桌面掛件和直接打開照相功能等;可擴展通知,允許用戶直接打開應用;Gmail郵件可縮放顯示;Daydream屏幕保護程序;用戶連點三次可放大整個顯示屏,還可用兩根手指進行旋轉和縮放顯示,以及專為盲人用戶設計的語音輸出和手勢模式導航功能等;支持Miracast無線顯示共享功能;Google Now現可允許用戶使用Gamail作為新的數據來源,如改進后的航班追蹤功能、酒店和餐廳預訂功能以及音樂和電影推薦功能等。
主詞條:Android 4.3
2013年7月25日發布。
Android 4.4KitKat(奇巧巧克力): 2013年下半年
2013年9月4日凌晨,谷歌對外公布了Android新版本Android 4.4KitKat(奇巧巧克力),並且於2013年11月01日正式發布,新的4.4系統更加整合了自家服務,力求防止安卓系統繼續碎片化、分散化。
Android 5.0Lollipop(棒棒糖):美國太平洋時間2014年10月15日
Android 5.0 系統使用一種新的Material Design設計風格。從圖片上就能看到一些全新的設計。從圖片上看,這套設計圖對 Android 系統的桌面圖標及部件的透明度進行的稍稍的調整,並且各種桌面小部件也可以重疊擺放。雖然調整桌面部件透明度對 Android 系統來說並不算什麼新鮮的功能,但是加入了透明度的改進。界面加入了五彩繽紛的顏色、流暢的動畫效果,呈現出一種清新的風格。採用這種設計的目的在於統一 Android 設備的外觀和使用體驗,不論是手機、平板還是多媒體播放器。
Android5.1 Lollipop(棒棒糖),美國太平洋時間2015年03月10日
Android 5.1新系統相對於Android5.0更加穩定了,同時支持多張SIM卡,加強了設備保護機制,增強了設備的WiFi能力。
Android 6.0Marshmallow(棉花糖):2015年9月30日
新系統的整體設計風格依然保持扁平化的Meterial Design風格。Android6.0在對軟體體驗與運行性能上進行了大幅度的優化。據測試,Android6.0可使設備續航時間提升30%。
Android 7.0Nougat(牛軋糖):2016年8月22日
Android 7.1更新為用戶和開發人員引入了各種新功能。
快捷方式
您可以使用新的快捷方式功能將用戶從啟動器直接帶入應用程序內的關鍵操作。用戶只需長按應用程序的啟動器圖標以顯示應用程序的快捷方式,然後點擊快捷方式即可跳至相關的操作。這些快捷方式是吸引用戶的好方法,它們使您甚至在用戶啟動應用程序之前也可以展示應用程序的功能。
每個快捷方式都引用一個意圖,每個意圖都會啟動一個特定的動作或任務,並且您可以為可以表示為意圖的任何動作創建一個快捷方式。例如,您可以創建用於發送新簡訊,進行預訂,播放視頻,繼續遊戲,載入地圖位置等等的意圖。
您可以通過將應用程序快捷方式添加到APK中的資源文件中來為其靜態創建快捷方式,也可以在運行時動態添加它們。靜態快捷方式是常見操作的理想選擇,動態快捷方式使您可以根據用戶的偏好,行為,位置等突出顯示操作。每個應用程序中最多可以提供五個快捷鍵。但是請注意,某些啟動器應用程序不會顯示您為應用程序註冊的所有快捷方式。
您的應用添加快捷方式后,便可以在任何支持它們的啟動器上使用它們,例如Pixel啟動器(Pixel設備上的默認啟動器),Now啟動器(Nexus設備上的默認啟動器)以及其他提供支持的啟動器。
任何應用程序都可以創建快捷方式,任何啟動器應用程序都可以添加對快捷方式的支持。Android 7.1提供了一個API,供應用程序註冊快捷方式和啟動程序讀取已註冊的快捷方式。
Android 8.0Oreo(奧利奧):2017 年 8 月 22 日
Android 8.1 功能和 API
Android 8.1(API 級別 27)為用戶和開發者引入了各種新功能。
Android 8.1 Go是一項旨在為全球數十億網路用戶優化 Android 體驗的計劃。從 Android 8.1 開始,我們就在將 Android 打造成入門級設備的理想平台。Android Oreo(Go 版本)配置中的功能包括:
● 內存優化。改進了整個平台的內存使用情況,可確保應用可以在內存不超過 1GB 的設備上高效運行。
● 靈活的定位選項。新的硬體功能常量,可讓您通過 Google Play 向正常內存或低內存設備分發應用。
● Google Play。儘管所有應用都可以在搭載 Android Oreo(Go 版本)的設備上使用,但 Google Play 仍會按照“為數十億用戶打造產品”指南展示經過開發者專門優化的應用,以便為數十億用戶提供出色的體驗。
我們更新了“為數十億用戶打造產品”指南,加入了有關如何針對搭載 Android Oreo(Go 版本)的設備優化應用的指導。對於大多數開發者來說,優化現有的 APK,或使用 Google Play 的多 APK 功能將某個 APK 版本定位到低內存設備,是針對搭載 Android Oreo(Go 版本)的設備做好準備的最佳方式。請注意,無論您的受眾使用何種設備,將應用打造得更加纖巧高效都對他們有益。
Android 9.0Pie (派):2018 年 5月 9日
通知欄樣式更改,整體設計添加了更多圓形。
Android 10.0 Q (未知)
從Android Q 開始,Google 開始提供系統級的黑暗模式,大部分預裝應用、抽屜、設置菜單和 Google Feed 資訊流等界面和按鈕,都會變成以黑色為主色調,就和你在macOS Mojave 中看到的暗色界面一樣
Android 11
在Android 11中,跨消息應用程序的對話將被移到“通知”部分的專用空間,從而可以輕鬆地一站式管理對話。用戶可以優先安排生活中關鍵人物的對話,這樣就不會錯過任何重要信息。
對話氣泡功能使設備上的多任務處理變得輕而易舉。用戶可以響應重要的對話,而不必在正在執行的操作和消息傳遞應用程序之間來回切換。
第二個改進是電源菜單,按下電源鍵之後,用戶進入的電源菜單可選的功能很少,現在可以加入一些卡片信息,比如Google Pay、智能家居控制等等。媒體控制項已經過重新設計,可以快速切換正在播放媒體的設備,這樣就可以將音樂從耳機轉移到揚聲器,類似於iOS的設計。
第三個功能就是對安全及隱私的改進,Android 11將進一步限制一些應用濫用許可權,包括麥克風、攝像頭、位置等,調用的時候會提示用戶授權。
除了單次授權之外,還有一個如果應用未使用則移除相關許可權的選項,未來會自動撤銷應用的授權。
Android 11增加了屏幕錄製內置工具,可以記錄屏幕上發生的事情,使用麥克風、設備或兩者的聲音。還有就是對一些新型屏幕技術的支持,比如瀑布屏、摺疊屏、雙屏等,交互方式根據這些屏幕做一些調整。
2019年10月11日消息,據外媒報道,2019年Android開發峰會將於本月晚些時候開幕,谷歌公布了完整的會議日程。在會議日程中谷歌官方首次提到了Android 11。
此前外媒發現在AOSP中,谷歌已經啟用了代號“Android R”。按照Android命名規則,Android R應該就是下一代Android:Android 11。
由於疫情原因,谷歌宣布取消線下的開發者大會,後來又取消了線上開發者大會,所以Android 11 將在2020年第三季度發布
官網發布時間軸
Android 11 開發者預覽版計劃從 2020 年 2 月啟動,到向 AOSP 和 OEM 提供最終的公開版本時結束,最終版本預計將於 2020 年第 3 季度發布。在開發階段的各個關鍵里程碑,我們將為您的開發和測試環境提供更新。每次更新均包括 SDK 工具、系統映像、模擬器、API 參考和 API 差異。里程碑列表如下。
時間軸 | Build | 類型 | 開發者操作 |
---|---|---|---|
2 月 | 開發者預覽版 1 | 早期的基準 build,涉及新功能、API 和行為變更,重點關注開發者反饋。 | API 反饋的重要窗口。查看新的 API 和行為變更,並在此期間向我們報告任何重大問題或請求。 |
3 月 | 開發者預覽版 2 | 增量更新,涉及更多的功能、API 和行為變更。 | 在處理 API 和行為變更時,向我們提供反饋。開始早期的應用兼容性測試。 |
4 月 | 開發者預覽版 3 | 針對穩定性和性能的增量更新。 | 準備好應用,迎接消費者 Beta 版。繼續進行兼容性測試,在不更改目標的情況下發布更新。如有任何問題,通知 SDK 和庫的開發者。 |
5 月 | Beta 版 1 | 初始 Beta 版本,面向註冊試用 Android Beta 版的嘗鮮者提供無線更新。 | 繼續進行兼容性測試,留意 Android Beta 版用戶的反饋。開始針對 Android 11 的早期測試。 |
6 月 | Beta 版 2 | 平台穩定性里程碑,提供最終的 API 和行為。開放 Play 發布。 | 開始對應用、SDK 和庫進行最終的兼容性測試。發布兼容版本。繼續針對 Android 11 的工作。 |
第 3 季度 | Beta 版 3 | 候選版本 build。 | 發布應用、SDK 和庫的兼容更新。繼續針對 Android 11 的工作。使用新功能和 API 構建應用。 |
第 3 季度 | 最終版本 | 面向 AOSP 和生態系統發布 Android 11 版本。 | 發布應用、SDK 和庫的兼容更新。繼續針對 Android 11 的工作。使用新功能和 API 構建應用。 |
Google Android操作系統自薑餅(2.3)起,每一個版本的操作系統中均包含一個不同的有趣的被隱藏的動畫彩蛋。彩蛋可以通過訪問“設置”,“關於手機”,反覆觸摸“Android版本”部分開啟。
2.3 (Gingerbread,薑餅小人):顯示一副Android機器人在殭屍群中的圖像。觸摸圖像顯示“Zombie Art by Jack Larson”(傑克·拉森的殭屍藝術)。
3.0 (Honeycomb,蜂窩):顯示一副Android蜜蜂的圖像。觸摸圖像顯示“嗡嗡”聲。
4.0 (Ice Cream Sandwich,冰淇淋三明治):Google模仿Nyan Cat,製作了8位版本的Android機器人籠罩在冰淇淋三明治餅乾中,飛過屏幕。
4.1 (Jelly Bean,果凍豆):一堆果凍豆分佈在屏幕上。然後,用戶可以用手指抓住果凍豆並撥動。在Android 4.2的Daydream屏保也可完成。
4.2 (Jelly Bean,果凍豆):通過在“關於”屏幕中觸摸“版本號”5次打開開發者工具,提示將出現在屏幕底部,告訴用戶還要版本號多少次,才能成為一個開發人員。一旦輕觸了五次,將祝賀用戶:“你現在是一名開發者!”(You are now a developer!)。
4.3 (Jelly Bean,果凍豆):出現一幅紅色果凍豆的圖片。輕敲屏幕會出現笑臉,並在果凍豆上顯示白色文字:“Android 4.3(此處換行)JELLY BEAN”。反覆觸摸果凍豆會出現更多,然後用戶可以撥動果凍豆。
4.4 (Kitkat,奇巧巧克力):會出現字母K,繼續點擊屏幕會出現Kitkat巧克力的標誌,只是Kitkat被換成了Android,再繼續點擊將出現一堆印著各種圖標的方塊,用戶可以點擊、拖動這些方塊,如果不進行任何操作,他們會互相來回變換自己的位置。
5.0 (Lollipop,棒棒糖):隱藏了一個類似Flappy bird的小遊戲。
6.0 (Marshmallow,棉花糖):同樣隱藏了類似一個Flappy Bird的小遊戲,但加入了多人模式,多手指可一塊屏幕上遊玩。
7.0 (Nougat,牛軋糖):隱藏了一個收集貓的小遊戲,放置食物,等待貓咪過來,可以分享給朋友。
8.0 (Oreo,奧利奧):隱藏了一隻黑色章魚,用戶可以滑動它,他會自己飄來飄去。
9 (Pie,派):隱藏了色彩繽紛的英文字母P,長按會出現一白色畫布,用戶可以在上面塗鴉。
10(Q):隱藏了英文字母Q和數字10,可以開啟數字遊戲,最後將拼出系統中含有的圖標。
11:多次滑動滑塊至11,可以觸發養貓遊戲,但需要Google Home的支持。
Android Gingerbread
Android Honeycomb
Android Ice Cream Sandwich
Android Jelly Bean
Android KitKat
Android Lollipop.jpg
Android Marshmallow
Android Nougat
Android Oreo
Android Pie
Android 10
Android結構
應用程序
Android會同一系列核心應用程序包一起發布,該應用程序包包括客戶端,SMS短消息程序,日曆,地圖,瀏覽器,聯繫人管理程序等。所有的應用程序都是使用JAVA語言編寫的。
應用程序框架
開發人員也可以完全訪問核心應用程序所使用的API框架。該應用程序的架構設計簡化了組件的重用;任何一個應用程序都可以發布它的功能塊並且任何其它的應用程序都可以使用其所發布的功能塊(不過得遵循框架的安全性)。同樣,該應用程序重用機制也使用戶可以方便的替換程序組件。
隱藏在每個應用後面的是一系列的服務和系統, 其中包括;
豐富而又可擴展的視圖(Views),可以用來構建應用程序,它包括列表(Lists),網格(Grids),文本框(Text boxes),按鈕(Buttons),甚至可嵌入的web瀏覽器。
內容提供器(Content Providers)使得應用程序可以訪問另一個應用程序的數據(如聯繫人資料庫),或者共享它們自己的數據
資源管理器(Resource Manager)提供 非代碼資源的訪問,如本地字元串,圖形,和布局文件(Layout files )。
通知管理器(Notification Manager) 使得應用程序可以在狀態欄中顯示自定義的提示信息。
活動管理器( Activity Manager) 用來管理應用程序生命周期並提供常用的導航回退功能。
系統運行庫
Android 包含一些C/C++庫,這些庫能被Android系統中不同的組件使用。它們通過 Android 應用程序框架為開發者提供服務。以下是一些核心庫:
* 系統 C 庫 - 一個從BSD繼承來的標準C系統函數庫 Libc ),它是專門為基於Embedded linux的設備定製的。
* 媒體庫 - 基於PacketVideo OpenCORE;該庫支持多種常用的音頻、視頻格式回放和錄製,同時支持靜態圖像文件。編碼格式包括MPEG4, H.264,MP3, AAC, AMR,JPG,PNG 。
* Surface Manager - 對顯示子系統的管理,並且為多個應用程序提 供了2D和3D圖層的無縫融合。
* LibWebCore - 一個最新的web瀏覽器引擎用,支持Android瀏覽器和一個可嵌入的web視圖。
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工作的一個工具。
APK是安卓應用的後綴,是AndroidPackage的縮寫,即Android安裝包(apk)。APK是類似Symbian Sis或Sisx的文件格式。通過將APK文件直接傳到Android模擬器或Android手機中執行即可安裝。apk文件和sis一樣,把android sdk編譯的工程打包成一個安裝程序文件,格式為apk。 APK文件其實是zip格式,但後綴名被修改為apk,通過UnZip解壓后,可以看到Dex文件,Dex是Dalvik VM executes的全稱,即Android Dalvik執行程序,並非Java ME的位元組碼而是Dalvik位元組碼。
APK文件結構
一個APK文件結構為:
1. META-INF\ (註:Jar文件中常可以看到);
2. res\ (註:存放資源文件的目錄) ;
3. AndroidManifest.xml (註:程序全局配置文件) ;
4. classes.dex (註:Dalvik位元組碼);
5. resources.arsc (註:編譯后的二進位資源文件)。
總結下我們發現Android在運行一個程序時首先需要UnZip,然後類似Symbian那樣直接執行安裝,和Windows Mobile中的PE文件有區別,這樣做對於程序的保密性和可靠性不是很高,通過dexdump命令可以反編譯,但這樣做符合發展規律,微軟的 Windows Gadgets或者說WPF也採用了這種構架方式。
在Android平台中dalvik vm的執行文件被打包為apk格式,最終運行時載入器會解壓然後獲取編譯后androidmanifest.xml文件中的permission分支相關的安全訪問,但仍然存在很多安全限制,如果你將apk文件傳到/system/app文件夾下會發現執行是不受限制的。
最終我們平時安裝的文件可能不是這個文件夾,而在android rom中系統的apk文件默認會放入這個文件夾,它們擁有著root許可權。
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,就可以取得操作函數。
操作系統與應用程序的溝通橋樑,應用分為兩層:函數層(Library)和虛擬機(Virtual Machine)。 Bionic是 Android 改良libc的版本。Android 同時包含了Webkit,所謂的Webkit 就是Apple Safari 瀏覽器背後的引擎。Surface flinger 是就2D或3D的內容顯示到屏幕上。Android使用工具鏈(Toolchain)為Google自製的Bionic Libc。
Android採用OpenCORE作為基礎多媒體框架。Open CORE可分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類(Column)取得共用資料庫。
Android的中間層多以Java 實現,並且採用特殊的Dalvik 虛擬機(Dalvik Virtual Machine)。Dalvik虛擬機是一種“暫存器型態”(Register Based)的Java虛擬機,變數皆存放於暫存器中,虛擬機的指令相對減少。
Dalvik虛擬機可以有多個實例(Instance),每個Android應用程序都用一個自屬的Dalvik虛擬機來運行,讓系統在運行程序時可達到優化。Dalvik 虛擬機並非運行Java位元組碼(Bytecode),而是運行一種稱為.dex格式的文件。
Android本身是一個許可權分立的操作系統。在這類操作系統中,每個應用都以一個系統識別身份運行(Linux用戶ID與群組ID)。系統的各部分也分別使用各自獨立的識別方式。Linux就是這樣將應用與應用,應用與系統隔離開。
系統更多的安全功能通過許可權機制提供。許可權可以限制某個特定進程的特定操作,也可以限制每個URI許可權對特定數據段的訪問。
Android安全架構的核心設計思想是,在默認設置下,所有應用都沒有許可權對其他應用、系統或用戶進行較大影響的操作。這其中包括讀寫用戶隱私數據(聯繫人或電子郵件),讀寫其他應用文件,訪問網路或阻止設備待機等。
安裝應用時,在檢查程序簽名提及的許可權,且經過用戶確認后,軟體包安裝器會給予應用許可權。從用戶角度看,一款Android應用通常會要求如下的許可權:
撥打電話、發送簡訊或彩信、修改/刪除SD卡上的內容、讀取聯繫人的信息、讀取日程信的息,寫入日程數據、讀取電話狀態或識別碼、精確的(基於GPS)地理位置、模糊的(基於網路獲取)地理位置、創建藍牙連接、對網際網路的完全訪問、查看網路狀態,查看WiFi狀態、避免手機待機、修改系統全局設置、讀取同步設定、開機自啟動、重啟其他應用、終止運行中的應用、設定偏好應用、震動控制、拍攝圖片等。
一款應用應該根據自身提供的功能,要求合理的許可權。用戶也可以分析一款應用所需許可權,從而簡單判定這款應用是否安全。如一款應用是不帶廣告的單機版,也沒有任何附加的內容需要下載,那麼它要求訪問網路的許可權就比較可疑。
Android開發四大組件分別是:活動(Activity):用於表現功能。服務(Service):後台運行服務,不提供界面呈現。廣播接收器(BroadcastReceiver):用於接收廣播。內容提供商(Content Provider):支持在多個應用中存儲和讀取數據,相當於資料庫。
Android 中,Activity是所有程序的根本,所有程序的流程都運行在Activity 之中,Activity可以算是開發者遇到的最頻繁,也是Android 當中最基本的模塊之一。在Android的程序當中,Activity 一般代表手機屏幕的一屏。如果把手機比作一個瀏覽器,那麼Activity就相當於一個網頁。在Activity 當中可以添加一些Button、Check box 等控制項。可以看到Activity 概念和網頁的概念相當類似。
一般一個Android 應用是由多個Activity 組成的。這多個Activity 之間 可以進行相互跳轉,例如,按下一個Button按鈕后,可能會跳轉到其他的Activity。和網頁跳轉稍微有些不一樣的是,Activity 之間的跳轉有可能返回值,例如,從Activity A 跳轉到Activity B,那麼當Activity B 運行結束的時候,有可能會給Activity A 一個返回值。這樣做在很多時候是相當方便的。
當打開一個新的屏幕時,之前一個屏幕會被置為暫停狀態,並且壓入歷史堆棧中。用戶可以通過回退操作返回到以前打開過的屏幕。可以選擇性的移除一些沒有必要保留的屏幕,因為Android會把每個應用的開始到當前的每個屏幕保存在堆棧中。
(Android的應用圖冊圖片來源: )
安卓不同版本圖片
開啟Service有兩種方式:
(1) Context.startService():Service會經歷onCreate -> onStart(如果Service還沒有運行,則android先調用onCreate()然後調用onStart();如果Service已經運行,則只調用onStart(),所以一個Service的onStart方法可能會重複調用多次);StopService的時候直接onDestroy,如果是調用者自己直接退出而沒有調用StopService的話,Service會一直在後台運行。該Service的調用者再啟動起來后可以通過stopService關閉Service。注意,多次調用Context.startservice()不會嵌套(即使會有相應的onStart()方法被調用),所以無論同一個服務被啟動了多少次,一旦調用Context.stopService()或者StopSelf(),他都會被停止。補充說明:傳遞給StartService(0的Intent對象會傳遞給onStart()方法。調用順序為:onCreate --> onStart(可多次調用) --> onDestroy。
(2) Context.bindService():Service會經歷onCreate() -->onBind(),onBind將返回給客戶端一個IBind介面實例,IBind允許客戶端回調服務的方法,比如得到Service運行的狀態或其他操作。這個時候把調用者(Context,例如Activity)會和Service綁定在一起,Context退出了,Service就會調用onUnbind --> onDestroyed相應退出,所謂綁定在一起就共存亡了。
在Android 中,Broadcast是一種廣泛運用的在應用程序之間傳輸信息的機制。而BroadcastReceiver 是對發送出來的Broadcast進行過濾接受並響應的一類組件。可以使用BroadcastReceiver 來讓應用對一個外部的事件做出響應。這是非常有意思的,例如,當電話呼入這個外部事件到來的時候,可以利用BroadcastReceiver 進行處理。例如,當下載一個程序成功完成的時候,仍然可以利用BroadcastReceiver 進行處理。BroadcastReceiver不能生成UI,也就是說對於用戶來說不是透明的,用戶是看不到的。BroadcastReceiver通過NotificationManager 來通知用戶這些事情發生了。BroadcastReceiver 既可以在AndroidManifest.xml 中註冊,也可以在運行時的代碼中使用Context.registerReceiver()進行註冊。只要是註冊了,當事件來臨的時候,即使程序沒有啟動,系統也在需要的時候啟動程序。各種應用還可以通過使用Context.sendBroadcast ()將它們自己的Intent Broadcasts廣播給其他應用程序。
Content Provider 是Android提供的第三方應用數據的訪問方案。
在Android 中,對數據的保護是很嚴密的,除了放在SD卡中的數據,一個應用所持有的資料庫、文件等內容,都是不允許其他直接訪問的。Andorid當然不會真的把每個應用都做成一座孤島,它為所有應用都準備了一扇窗,這就是Content Provider。應用想對外提供的數據,可以通過派生Content Provider類,封裝成一枚Content Provider,每個Content Provider都用一個uri作為獨立的標識,形如:content://com.xxxxx。所有東西看著像REST的樣子,但實際上,它比REST 更為靈活。和REST類似,uri也可以有兩種類型,一種是帶id的,另一種是列表的,但實現者不需要按照這個模式來做,給id的uri也可以返回列表類型的數據,只要調用者明白,就無妨,不用苛求所謂的REST。
在優勢方面,Android平台首先就是其開放性,開發的平台允許任何移動終端廠商加入到Android聯盟中來。顯著的開放性可以使其擁有更多的開發者,隨著用戶和應用的日益豐富,一個嶄新的平台也將很快走向成熟。
開放性對於Android的發展而言,有利於積累人氣,這裡的人氣包括消費者和廠商,而對於消費者來講,最大的受益正是豐富的軟體資源。開放的平台也會帶來更大競爭,如此一來,消費者將可以用更低的價位購得心儀的手機。
這一點還是與Android平台的開放性相關,由於Android的開放性,眾多的廠商會推出千奇百怪,功能特色各具的多種產品。功能上的差異和特色,卻不會影響到數據同步、甚至軟體的兼容,如同從諾基亞Symbian風格手機一下改用蘋果iPhone,同時還可將Symbian中優秀的軟體帶到iPhone上使用、聯繫人等資料更是可以方便地轉移。
Android平台提供給第三方開發商一個十分寬泛、自由的環境,不會受到各種條條框框的阻擾,可想而知,會有多少新穎別緻的軟體會誕生。但也有其兩面性,血腥、暴力、情色方面的程序和遊戲如何控制正是留給Android難題之一。
在網際網路的Google已經走過10年度歷史,從搜索巨人到全面的網際網路滲透,Google服務如地圖、郵件、搜索等已經成為連接用戶和網際網路的重要紐帶,而Android平台手機將無縫結合這些優秀的Google服務。
2021年4月5日,美國最高法院裁定,Alphabet旗下谷歌建構其Android智能手機操作系統的方式未侵犯甲骨文的版權,這消除了谷歌向甲骨文授予數十億美元賠償的前景。