android三層架構
1. 什麼是android系統,android的發展以及android的平台架構和特性
Android平台採用了整合的策略思想,包括底層linux操作系統、中間層的中間件和上層的java應用程序。下面我把Android的特性及其架構體系結構總結一下。
一、Android的平台特性
Android平台有如下特性:
1. 應用程序框架支持組件的重用與替換。
這樣我們可以把系統中不喜歡的應用程序刪除,安裝我們喜歡的應用程序。
2. Dalvik虛擬機專門為移動設備進行了優化。
Android應用程序將由Java編寫、編譯的類文件通過DX工具轉換成一種後綴名為.dex的文件來執行。Dalvik虛擬機是基於寄存器的,相對於Java虛擬機速度要快很多。
3. 內部集成瀏覽器基於開源的WebKit引擎。
有了內置的瀏覽器,這將意味著WAP應用的時代即將結束,真正的移動互聯網時代已經來臨,手機就是一台「小電腦」,可以在網上隨意遨遊。
4. 優化的圖形庫包括2D和3D圖形庫,3D圖形庫基於OpenGL ES 1.0。
強大的圖形庫給游戲開發帶來福音。在3G最為重要的的應用莫過於手機上網和手機游戲。
6. 多媒體支持包括常見的音頻、視頻和靜態印象文件格式
如MPEG4、H.264、MP3、AAC、AMR、JGP、PNG、GIF。
7. GSM電話(依賴於硬體)。
8. 藍牙(Bluetooth)、EDGE、3G、WiFi(依賴於硬體)。
9. 照相機、GPS、指南針和加速度計(依賴於硬體)。
10. 豐富的開發環境包括設備模擬器、調試工具、內存及性能分析圖表和Eclipse集成的開發環境插件。
Google提供了Android開發包SDK,其中包含了大量的類庫和開發工具,並且針對Eclipse的可視化開發插件ADT。
二、Android平台架構
從上圖我們可以看出,Android操作系統的體系結構可分為4層,由上到下依次是應用程序、應用程序框架、核心類庫和Linux內核,其中第三層還包括Android運行時的環境。下面分別來講解各個部分。
1. 程序應用
Android
連同一個核心應用程序包一起發布,該應用程序包包括E-mail客戶端、SMS短消息程序、日歷、地圖、瀏覽器、聯系人管理程序等。所有的應用程序都是用Java編寫的。
2. 應用程序框架
開發者完全可以訪問核心應用程序所使用的API框架。該應用程序框架架構用來簡化組件軟體的重用,任何一個應用程序都可以發布它的功能塊並且任何其他的應用程序都可以使用其所發布的功能塊(不過得遵循框架的安全性限制)。該應用程序重用機制使得組件可以被用戶替換。
以下所有的應用程序都由一系列的服務和系統組成,包括:
1)一個可擴展的視圖(Views)可以用來創建應用程序,包括列表(lists)、網路(grids)、文本框(text
boxes)、按鈕(buttons),甚至是一個可嵌入的Web瀏覽器。
2)內容管理器(Content Providers)使得應用程序可以訪問另一個應用程序的數據(如聯系人資料庫),或者共享它們自己的數據。
3)一個資源管理器(Resource Manager)提供非代碼資源的訪問,如本地字元串、圖形和分層文件(layout files)。
4)一個通知管理器(Notification Manager)使得應用程序可以在狀態欄中顯示客戶通知信息。
5)一個活動類管理器(Activity Manager)用來管理應用程序生命周期並提供常用的導航回退功能。
3. Android程序庫
Android包括一個被Android系統中各種不同組件所使用的C/C++集庫。該庫通過Android應用程序框架為開發者提供服務。
以下是一些主要的核心庫:
1)系統C庫:一個從BSD繼承來的標准C系統函數庫(libc),專門為基於Embedded Linux的設備定製。
2)媒體庫:基於PacketVideo
OpenCORE;該庫支持錄放,並且可以錄制許多流行的音頻視頻格式,還有靜態映像文件包括MPEG4、H.264、MP3、AAC、JPG、PNG。
3)Surface Manager:對顯示子系統的管理,並且為多個應用程序提供2D和3D圖層的無縫融合。
4)LibWebCore:一個最新的Web瀏覽器引擎,用來支持Android瀏覽器和一個可嵌入的Web視圖。
5)SGL:一個內置的2D圖形引擎。
6)3D libraries:基於OpenGL ES 1.0 APIs實現;該庫可以使用硬體3D加速(如果可用)或者使用高度優化的3D軟加速。
7)FreeType:點陣圖(bitmap)和向量(vector)字體顯示。
8)SQLite:一個對於所以應用程序可用、功能強勁的輕型關系型資料庫引擎。
4. Android運行庫
Android包括了一個核心庫,該核心庫提供了Java編程語言核心庫的大多數功能。
每一個Android應用程序都在它自己的進程中運行,都擁有一個獨立的Dalvik虛擬機實例。Dalvik是針對同時高效地運行多個VMs實現的。Dalvik虛擬機執行.dex的Dalvik可執行文件,該格式文件針對最小內存使用做了優化。該虛擬機是基於寄存器的,所有的類都是經由Java匯編器編譯,然後通過SDK中的DX工具轉化成.dex格式由虛擬機執行。
Dalvik虛擬機依賴於Linux的一些功能,比如線程機制和底層內存管理機制。
5. Linux內核
Android的核心系統服務依賴於Linux內核,如安全性、內存管理、進程管理、網路協議棧和驅動模型。Linux內核也同時作為硬體和軟體棧之間的硬體抽象層。
2. 為什麼手機安卓系統優化不好
第一系統的架構層次決定的,
第二安卓是開源的,
第三安卓開源後優化廠家的能力參差不齊。
第一個問題,架構層次從下到上依次是
第一層:
Linux操作系統和驅動(Linux kernel):由C語言實現
第二層:本地框架和Java運行環境(LIBRARIES 和ANDROID RUNTIME)
第三層:Android應用框架(ANDROIDFRAMEWORK)
第四層:Android應用程序(APPLICATIONS) 。
第二個問題。安卓開源,好處就是可以快速普及,拉攏大部分廠家。壞處就是碎片化嚴重。
第三個問題。一個版本出來後,大部分廠家都只是在第四層修改,少部分能夠在第三層修改,極少部分能夠在第一層修改。
最後重要的一點就是安卓的內存回收機制不一樣。安卓是每個程序都可以用一點。如果不夠用了,停止最先的程序,空出的內存給最新的用。ios的就是退出程序立馬回收內存。
3. 鴻蒙系統和安卓有什麼不同哪個好
一、什麼是鴻蒙系統
華為鴻蒙系統(英文:huaweiHarmonyOS,HongmengOS)。在2019年8月9日,華為在東莞舉行華為開發者大會,正式發布操作系統鴻蒙OS。
鴻蒙OS是一款「面向未來」的操作系統,一款基於微內核的面向全場景(移動辦公、運動 健康 、社交通信、媒體 娛樂 等)分布式操作系統,可按需擴展,實現更廣泛的系統安全,主要用於物聯網,特點是低時延,甚至可到毫秒級乃至亞毫秒級。其實現模塊化耦合,對應不同設備可彈性部署,鴻蒙OS有三層架構,第一層是內核,第二層是基礎服務,第三層是程序框架。現已適配智慧屏,未來它將適配手機、平板、電腦、智能 汽車 、可穿戴設備等多終端設備。
鴻蒙OS 2020年9月10日,華為鴻蒙系統升級至華為鴻蒙系統2.0版本。這個月16日華為將舉行鴻蒙2.0系統手機開發者beta活動(上一篇文章有詳細介紹,想了解的可以點擊下面的文章鏈接查閱)
愛生活:見證 歷史 時刻:華為鴻蒙系統來了!
鴻蒙系統和安卓系統哪個好? 二、鴻蒙系統與安卓系統的區別在哪,是不是也是和安卓一樣基於虛擬機創建的。
1、安卓與鴻蒙手機操作系統基本都是基於Linux開發的,但兩者的構架是不同的:
安卓系統是基於linux的宏內核設計:宏內核包含了操作系統絕大多數的功能和模塊,而且這些功能和模塊都具有最高的許可權,只要一個模塊出錯,整個系統就會崩潰,這也是安卓系統容易崩潰的原因。好處就是系統開發難度低。 (而現在,華為新研發的方舟編譯器就是為了解決這個問題的,任何由編譯器編譯的android軟體都可以直接與系統底層進行通信,鴻蒙系統加編譯器將取代虛擬機。) Android是用Java語言編寫的,很容易學習。但它有一個缺點:不能與系統底層直接進行通信活動,必須通過虛擬機來運行。說直接點就是虛擬機相當於傳遞者:首先Android應用程序安裝在虛擬機上,然後從虛擬機傳輸到機器的底部,如果虛擬機出了問題話的那系統就是卡住。而且鴻蒙系統中的方舟編譯器就是為了解決這個問題的,任何由編譯器編譯的android軟體都可以直接與系統底層進行通信, 鴻蒙系統加編譯器將取代虛擬機 。
鴻蒙操作系統是微內核設計:微內核僅包括了操作系統必要的功能模塊(任務管理、內存分配等)處在核心地位具有最高許可權,其他模塊不具有最高許可權,也就是說其他模塊出現問題,對於整個系統的運行是沒有阻礙的。微內核的開發難度很大,但是系統的穩定性很高。根據目前華為公布的一些資料信息,我們可以推斷出鴻蒙系統是用C、C++語言編寫即直接使用機器語言編寫app,取消安卓系統的ART虛擬機,直接編譯為二進制機器碼,這樣做的好處就是不需要中轉,執行速度快;但這樣的操作也有一些缺點就是必須要有大量的靜態方案且內存空間要求更高。
有報道說鴻蒙系統比谷歌的安卓系統快運行速度快了60%,為什麼會快這么多呢?原因有以下兩點:
其一;谷歌的安卓系統是基於Linux開發,華為的「鴻蒙」系統也是基於Linux開發,並對Linux進行大量優化,此前,華為推出自研EROFS超級文件系統、僅是基於華為方舟編譯器開發的應用,就能夠讓安卓系統性能提升數倍來看,底層整合了EROFS和方舟編譯器的華為鴻蒙系統,自然要比安卓系統快很多
其二:安卓系統程序員寫APP使用的是JAVA高級語言,打包成APK到安卓系統後。由於安卓系統讀不懂JAVA高級語言,必須藉助實時翻譯(JAVA虛擬機)進行理解(轉換成機器語言)。因為多了"翻譯"這個步驟,所以安卓系統的流暢度一直以來都比不過蘋果iOS。而方舟編譯器,則是讓APK打包之前,統一把指令換成安卓系統能讀懂的機器語言,也就是省去了"翻譯"這個步驟,效率自然就更高。
2、鴻蒙系統與安卓系統的使用范圍不同:
第一:安卓系統適用於手機,而鴻蒙系統對設備兼容性更強,同時支持智能手機、智能穿戴設備、電腦、電視等智能家居設備,形成一個無縫的、統一的操作系統,並且兼容所有的安卓應用,適應當下的5G和物聯網時代。
3、安卓系統經過多年發展,軟體生態非常完善,鴻蒙系統目前來說還談不上生態。華為推出鴻蒙操作系統並不困難,相對於推出操作系統而言,更難的是如何聚攏開發者為這款操作系統持續開發各類優質應用,讓這款操作系統得以具備真正價值,繼而發展壯大,在系統開發商、硬體廠商、開發者與用戶之間形成良性正循環。要讓開發者為鴻蒙操作系統開發應用,需要的是實實在在的政策激勵,利益引導,依靠情懷等是無法解決也是不可持續的,這就是華為推出鴻蒙系統之後需要解決的一大難題!
三、鴻蒙系統的安全性怎麼樣,能否一改國內安卓軟體的隱私問題。
上面我們聊到鴻蒙與安卓系統的區別中說到兩個概念:微內核(鴻蒙),宏內核(安卓)。鴻蒙操作系統採用微內核,天然無Root,細粒度許可權控制從源頭提升系統安全。而安卓系統有Root許可權,用戶可以完全掌控經過Root之後的安卓系統。而鴻蒙則沒有Root這一選項。同時據華為終端公司官微消息,鴻蒙基於微內核技術的可信執行環境,通過形式化方法顯著提升了內核安全等級,全面提升全場景終端設備的安全能力。對此余承東曾表示過:微內核可以把每一個單獨加鎖,不可能一個鑰匙攻破所有地方。而外核的相互隔離更加安全也更加高效。從全球最權威的安全機構評測看,現在外面的操作系統只能達到二三級,而我們的系統能達到5和5+最高級別。這是最高級別的安全OS。所以鴻蒙系統的安全性遠高於安卓系統。
寫在最後:
2018年12月1日,加拿大在美國的授意下逮捕了華為CFO孟晚舟。
2019年5月16日,美國總統特朗普簽署了行政命令,華為被美國商務部工業與安全局(BIS)列入「實體名單」。
2019年5月20日,美國公司谷歌宣布遵守美國禁令暫停支持華為部分業務;
隨後,美國公司英特爾、高通等晶元製造商也宣布停止對華為供貨,德國晶元廠商英飛凌也宣布暫停對華為供貨。
2019年5月23日,英國兩大主流通訊商宣布暫停銷售華為手機。
在這種時候華為能夠拿出自己的操作系統頂住美國的封殺,展現出了超強的實力以及超前的憂患意識。這也使我們無論從何種角度來看,都是值得為華為點贊的。華為目前面對的是機遇也是挑戰!
時代在變化,人類 社會 在進步,更先進的新系統必定取代落後的舊系統!!華為加油!!
來自電子發燒友網站!
4. 想用Java開發一款android軟體,三層架構應該怎麼寫類似圖片這樣的
首先你的表現層用到了HTML這樣的頁面元素,那麼可以使用Android的WebView組件,這個WebView可以當做一個系統內置的瀏覽器。
然後業務層對應Android的Java後台業務程序,Android不像企業級的J2EE項目那樣,一定要有介面、一定要介面注入,為了運行快速、減少手機壓力,一般都是用class類直接寫業務代碼。
數據層如果用database的話就用Sqlite,這是android內置支持的輕量級資料庫。
說多點,表現層的文件如果是部署在手機上就不能用JSP,只能用純HTML。使用JSP的話,就需要部署一個j2ee項目到伺服器,然後WebView用http請求去獲取頁面元素。而使用HTML的話則不依賴伺服器,只是說要讓頁面數據動態化,就需要用到AJAX或者Android的javaScriptInterface。
要寫這樣的程序需要學幾個關鍵功能:WebView、HTML5/Jquery mobile、sqlite,挨個去學習吧,兩周內就熟練了。