當前位置:
首頁 > 最新 > 計算機知識之——Android雜談

計算機知識之——Android雜談

Hello各位讀者朋友們,暑假快樂!

如今,智能手機普及,幾乎到了人手一台的地步,手機深入人們的生活,而手機系統成了人們選擇手機的標準之一,但你真的了解你的手機系統嗎?

今天我們就來講講兩大手機系統iOS和Android中的Android系統。

Android系統是什麼

Android一詞的本義指「機器人」,早出現於法國作家利爾亞當(Auguste Villiers de l"Isle-Adam)在1886年發表的科幻小說《未來夏娃》(L"ève future)中。他將外表像人的機器起名為Android。

我們這裡所說的Android是一種基於Linux的自由及開放源代碼的操作系統,主要使用於移動設備,如智能手機和平板電腦,由Google公司和開放手機聯盟領導及開發。

其實Android系統在智能穿戴設備,電視,甚至汽車上都能裝載,並不只限於手機一類的移動設備。

Android的Logo是由Ascender公司設計的,誕生於2010年,其設計靈感源於男女廁所門上的圖形符號,於是布洛克繪製了一個簡單的機器人,它的軀幹就像錫罐的形狀,頭上還有兩根天線,Android小機器人便誕生了。其中的文字使用Ascender公司專門製作的稱之為「Droid」的字體。Android是一個全身綠色的機器人,綠色也是Android的標誌。顏色採用了PMS 376C和RGB中十六進位的#A4C639來繪製,這是Android操作系統的品牌象徵。有時候,它們還會使用純文字的Logo。

2012年7月美國科技博客網站BusinessInsider評選出二十一世紀十款最重要電子產品,Android操作系統和iPhone等榜上有名。

Android的發展歷程

Android操作系統最初由Andy Rubin開發,主要支持手機。

2005年8月由Google收購注資。

2007年11月,Google與84家硬體製造商、軟體開發商及電信營運商組建開放手機聯盟共同研發改良Android系統。隨後Google以Apache開源許可證的授權方式,發布了Android的源代碼。第一部Android智能手機發佈於2008年10月。Android逐漸擴展到平板電腦及其他領域上,如電視、數碼相機、遊戲機等。

2011年第一季度,Android在全球的市場份額首次超過塞班系統,躍居全球第一。(然後在同年12月份Nokia就宣布放棄塞班品牌,兩年後塞班就徹底銷聲匿跡,可以說Android見(cu)證(jin)了塞班的毀滅)

2013年的第四季度,Android平台手機的全球市場份額已經達到78.1%。

2013年09月24日谷歌開發的操作系統Android在迎來了5歲生日,全世界採用這款系統的設備數量已經達到10億台。

2014第一季度Android平台已佔所有移動廣告流量來源的42.8%,首度超越iOS。但運營收入不及iOS。

如今十個用智能手機的人里有九個用的是Android系統。

在Android剛誕生時,還有一段軼事,Android之父Andy當年開發了兩套系統,另一套叫Danger(這名字也不取好點兒……),還有一套就是Android,Andy本來看好大兒子Danger,5億美刀賣給了微軟,然鵝倆月就玩完了,而Android只賣了四千萬,卻一鳴驚人(果然兒子還是得賤養)。

By the way,這裡再插一個冷知識,其實自從Android出世以來,大部分Android手機的硬體都是在中國生產的,只不過有些被包裝之後又賣回了中國。

Android系統的組織架構

(前方高能,可選擇性跳過)

Android採用層次化系統架構,官方公布的標準架構如下圖所示。Android由底層往上分為4個主要功能層,分別是linux內核層(Linux Kernel),系統運行時庫層(Libraries和Android Runtime),應用程序架構層(Application Framework)和應用程序層(Applications)。

接下來對這幾個層面進行逐個分析:

Linux內核層

Android以Linux操作系統內核為基礎,藉助Linux內核服務實現硬體設備驅動,進程和內存管理,網路協議棧,電源管理,無線通信等核心功能。Android4.0版本之前基於Linux2.6系列內核,4.0及之後的版本使用更新的Linux3.X內核,並且兩個開源項目開始有了互通。Linux3.3內核中正式包括一些Android代碼,可以直接引導進入Android。Linux3.4增添了電源管理等更多功能,以增加與Android的硬體兼容性,使Android在更多設備上得到支持。

Android內核對Linux內核進行了增強,增加了一些面向移動計算的特有功能。例如,低內存管理器LMK(Low Memory Keller),匿名共享內存(Ashmem),以及輕量級的進程間通信Binder機制等。這些內核的增強使Android在繼承Linux內核安全機制的同時,進一步提升了內存管理,進程間通信等方面的安全性。

硬體抽象層

內核驅動和用戶軟體之間還存在所謂的硬體抽象層(Hardware Abstract Layer,HAL),它是對硬體設備的具體實現加以抽象。鑒於許多硬體設備廠商不希望公開其設備驅動的源代碼,如果能將android的應用框架層與linux系統內核的設備驅動隔離,使應用程序框架的開發盡量獨立於具體的驅動程序,則android將減少對Linux內核的依賴。HAL由此而生,它是對Linux內核驅動程序進行的封裝,將硬體抽象化,屏蔽掉了底層的實現細節。HAL規定了一套應用層對硬體層讀寫和配置的統一介面,本質上就是將硬體的驅動分為用戶空間和內核空間兩個層面;Linux內核驅動程序運行於內核空間,硬體抽象層運行於用戶空間。

系統運行庫層

官方的系統架構圖中,位於Linux內核層之上的系統運行庫層是應用程序框架的支撐,為Android系統中的各個組件提供服務。系統運行庫層由系統類庫和Android運行時構成。

系統類庫

系統類庫大部分由C/C++編寫,所提供的功能通過Android應用程序框架為開發者所使用。很多類庫,例如SQlite,WebKit,SSL都在會在日常開發中有用到。

除上表列舉的主要系統類庫之外,Android NDK(Native Development Kit),即Android原生庫,也十分重要。NDK為開發者提供了直接使用Android系統資源,並採用C或C++語言編寫程序的介面。因此,第三方應用程序可以不依賴於Dalvik虛擬機進行開發。實際上,NDK提供了一系列從C或C++生成原生代碼所需要的工具,為開發者快速開發C或C++的動態庫提供方便,並能自動將生成的動態庫和java應用程序一起打包成應用程序包文件,即.apk文件。

注意,使用原生庫無法訪問應用框架層API,兼容性可能無法保障。而且從安全性角度考慮,Android原生庫用非類型安全的程序語言C,C++編寫,更容易產生安全漏洞,原生庫的缺陷(bug)也可能更容易直接影響應用程序的安全性。

運行時Android運行時包含核心庫和Dalvik虛擬機兩部分。

核心庫:核心庫提供了Java5 se API的多數功能,並提供Android的核心API,如android.os,android.net,android.media等。

Dalvik虛擬機:Dalvik虛擬機是基於apache的java虛擬機,並被改進以適應低內存,低處理器速度的移動設備環境。Dalvik虛擬機依賴於Linux內核,實現進程隔離與線程調試管理,安全和異常管理,垃圾回收等重要功能。

本質而言,Dalvik虛擬機並非傳統意義上的java虛擬機(JVM)。Dalvik虛擬機不僅不按照Java虛擬機的規範來實現,而且兩者不兼容。

Dalvik和標準Java虛擬機有以下主要區別:

Dalvik基於寄存器,而JVM基於棧。一般認為,基於寄存器的實現雖然更多依賴於具體的CPU結構,硬體通用性稍差,但其使用等長指令,在效率速度上較傳統JVM更有優勢。

Dalvik經過優化,允許在有限的內存中同時高效地運行多個虛擬機的實例,並且每一個Dalvik應用作為一個獨立的Linux進程執行,都擁有一個獨立的Dalvik虛擬機實例。Android這種基於Linux的進程「沙箱」機制,是整個安全設計的基礎之一。

Dalvik虛擬機從DEX(Dalvik Executable)格式的文件中讀取指令與數據,進行解釋運行。DEX文件由傳統的,編譯產生的CLASS文件,經dx工具軟體處理後生成。

Dalvik的DEX文件還可以進一步優化,提高運行性能。通常,OEM的應用程序可以在系統編譯後,直接生成優化文件(.ODEX);第三方的應用程序則可在運行時在緩存中優化與保存,優化後的格式為DEY(.dey文件)。

這部分內容,即從android4.4開始就出現了ART(android runtime),但是這個ART並不是指這一節的主題,而是一種用來代替Dalvik的新型運行環境。當然在4.4的正式環境中用的還是Dalvik,真正開始用ART取代Dalvik是從android5.0開始的。

另外這一節中有提到NDK,相信對於開發者而言SDK和NDK都是必要要接觸和了解的東西,那麼先從下圖來看看sdk和ndk的關係。

很顯然地,ndk可以通過native code跨過使用dalvik runtime,直接調用到android內核資源,而sdk則需要在dalvik runtime環境下才能調用到內核資源。然而兩者並不是各司其職,各不相關。android提供了JNI(java native interface)使兩者可以進行相互調用和通信。

應用程序框架層

應用程序框架層提供開發Android應用程序所需的一系列類庫,使開發人員可以進行快速的應用程序開發,方便重用組件,也可以通過繼承實現個性化的擴展。

應用層

Android平台的應用層上包括各類與用戶直接交互的應用程序,或由java語言編寫的運行於後台的服務程序。例如,智能手機上實現的常見基本功能程序,諸如SMS簡訊,電話撥號,圖片瀏覽器,日曆,遊戲,地圖,web瀏覽器等程序,以及開發人員開發的其他應用程序。

使用時的具體問題

Q1:為什麼Android手機會越用越卡?

A1:Android系統基於Linux,是開源的操作系統,可以拷貝,改寫,理論上,根據當年Linux的開源協議,所有適用於Linux的應用都可以獲得系統的最高許可權(Android的Root許可權),這樣一來,手機應用佔用的內存越來越多,導致手機卡頓,其實iOS手機用幾年也會變卡,只不過是時間問題罷了,不過隨著時間推移,Android操作系統廠商和手機製造廠商逐步提高應用程序許可權的管理,Android手機也越來越穩定。

時常清理手機應用內存(比如微信QQ)有助於緩解卡頓,關閉自啟應用,清理後台也能讓手機變快。

Q2:為什麼一些國內外手機製造商的手機系統不叫Android而是其他名字,譬如小米的MIUI,魅族的Flyme,華為的操作系統EmUI。

A2:所有這些系統都是基於Android原生系統進行的優化和改裝,不過是披著山羊皮的綿羊,手機廠商通過優化來增強手機系統的便捷性和安全性(據說Android原生就連電話應用都要找半天),不過手機廠商們神仙打架般的系統和預裝軟體也是廣受詬病。

Q3:Android系統和iOS系統孰高孰低?

A3:這個就仁者見仁智者見智了,Android手機可以很輕鬆地下載插件,字體啥的,Root之後還可以刪除預裝軟體,修改內存,iOS系統較安全穩定,iOS12據說優化明顯,而且蘋果獨一份,辨識度高,可以裝x。

Q4:Android手機Root之後有什麼後果嗎?

A4:問題還是有的,Root許可權破解後,手機會面臨很多危險,而且容易變磚,一定要謹慎。

Q5:Android手機是否有必要下載第三方殺毒軟體?

A5:最好不要,一般手機自帶的手機管家就夠了,而且有時候殺毒軟體才是手機卡頓的罪魁禍首,譬如360一大家子。

好了,今天關於Android系統的介紹就到此為止,我們下期再見!

本期撰稿:宣傳組 light

本期責任編輯:CEO 神之魂

媒體運營監製:CEO 神之魂 宣傳組組長 一杯咖啡三噸糖

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 諾比圖工作室 的精彩文章:

TAG:諾比圖工作室 |