導航:首頁 > 操作系統 > androiddisplay架構分析

androiddisplay架構分析

發布時間:2023-05-23 03:46:15

㈠ 什麼是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最為重要的的應用莫過於手機上網和手機游戲。

5. SQLite用作結構化的數據存儲。

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內核也同時作為硬體和軟體棧之間的硬體抽象層。

㈡ Android的系統架構包括哪些部分

包括四部分,具體如下:賣擾旦

1.應用程序層,它包括客戶端、SMS短消息程序、日歷、地圖、瀏覽器、聯系人管理程序等,所有的應用程序都是使用JAVA語言編寫的;

2.應用程序框架層,任何一個應用程序都可以發布它的功李散能塊,並且任何其它的應用程序都可以使用其所發布的功能中擾塊,也可以使用戶方便地替換程序組件;

3.系統運行庫層,這些庫能被Android系統中不同的組件使用,可以通過Android應用程序框架為開發者提供服務;

4.Linux內核層,它提供了用於支持Android平台的設備驅動。

㈢ android軟體開發的架構(android的系統架構)

Android以Java為編程語言,使介面到功能,都有層出不窮的變化,其中Activity等同於J2ME的MIDlet,一個Activity類(class)負責創建視窗(window),一個活動中的Activity就是在foreground(前景)模式,背景運行的程序叫做Service。兩者之間通過由和AIDL連結,達到復數程序同時運行的效果。如果運行中的Activity全部畫面被其他Activity取代時,該Activity便被停止(stopped),甚至被系統清除(kill)。

View等同於J2ME的Displayable,程序人員可以通過View類與「XMLlayout」檔將UI放置在視窗上,Android1.5的版本可以利用View打造出所謂的Widgets,其實Widget只是View的一種,所以可以使用xml來設計layout,HTC的AndroidHero手機即含有大量的widget。至於ViewGroup是各種layout的基礎抽象類(abstractclass),ViewGroup之內還可以有ViewGroup。View的構造函數不需要在Activity中調用,但是Displayable的是必須的,在Activity中,要通過()來從XML中取得View,Android的View類的顯示很大程度上是從XML中讀取的。View與事件(event)息息相關,兩者之間通過Listener結合在一起,每一個View都可以注冊一個eventlistener,例如:當View要處理用戶觸碰(touch)的事件時,就要向Android框架注冊View.。另外還有Image等同於J2ME的BitMap。在模擬器上運行模擬是虛擬設備(AVD),我們需要配置來運行我們的Android應用程序。步驟1、開放的AVD管理步驟2、新的按鈕,胡如點擊添加新設備,並配置您的設備設置。步驟3、會有一個結果窗口顯示所有已配置你上一屏幕選擇。步驟4、按「確定」,你將會看到你的設備列在有你可以關閉此窗口。步驟5、運行你的Android應用程序項目從Eclipse,如果只有一個AVD配置,它會自動部署的應用程序也會出現一個窗口,選擇你的圖片。模擬器將開始。在設備上運行

Android應用程序可以直接部署在Android設備上,這幾個配置所需要的。步驟1、在調試模式的設置可以設置應用程序:Android的<應用程序>元真可調試屬性。ADT8這是默認的。步驟2、您的設備上啟用USB調試:Android3.2或以上轉至設置>應用程序>開發和啟用USB調試。在Android4更新,這是開發商選擇設置>。註:在Android4.2更新,開發者選項是默認隱藏。可以,去設定>android的版本號。返回先前屏幕找到開發商選擇。步驟3、安裝USB驅動程序為您的設備,計算機識別虛姿你的設備。步驟4、一旦設置和您的設備通過USB連接,從Eclipse菜單欄安裝您的應用程序在設備上選擇運行>運行(或運行>調試)。操作系統與應用程序的溝通橋梁,並用分為兩層:函數層(Library)和虛擬機(VirtualMachine)。Bionic是Android改良libc的版本。Android同時包含了Webkit,所謂的Webkit就是AppleSafari瀏覽器背後的引擎。Surfaceflinger是就2D或3D的內容顯示到屏幕上。Android使用工具鏈(Toolchain)為Google自製的BionicLibc。

Android採用OpenCORE作為基礎多媒體框架。OpenCORE可分7大塊:PVPlayer、PVAuthor、差做絕Codec、(PVMF)、OperatingSystemLibrary(OSCL)、Common、OpenMAX。

Android使用skia為核心圖形引擎,搭配OpenGL/ES。skia與LinuxCairo功能相當,但相較於LinuxCairo,skia功能還只是陽春型的。2005年Skia公司被Google收購,2007年初,SkiaGL源碼被公開,Skia也是GoogleChrome的圖形引擎。

Android的多媒體資料庫採用SQLite資料庫系統。資料庫又分為共用資料庫及私用資料庫。用戶可通過類(Column)取得共用資料庫。

Android的中間層多以Java實現,並且採用特殊的Dalvik虛擬機(DalvikVirtualMachine)。Dalvik虛擬機是一種「暫存器型態」(RegisterBased)的Java虛擬機,變數皆存放於暫存器中,虛擬機的指令相對減少。

Dalvik虛擬機可以有多個實例(instance),每個Android應用程序都用一個自屬的Dalvik虛擬機來運行,讓系統在運行程序時可達到優化。Dalvik虛擬機並非運行Java位元組碼(Bytecode),而是運行一種稱為.dex格式的文件。Android的HAL(硬體抽像層)是能以封閉源碼形式提供硬體驅動模塊。HAL的目的是為了把Androidframework與Linuxkernel隔開,讓Android不至過度依賴Linuxkernel,以達成kernelindependent的概念,也讓Androidframework的開發能在不考慮驅動程序實現的前提下進行發展。

HALstub是一種代理人(proxy)的概念,stub是以*.so檔的形式存在。Stub向HAL「提供」操作函數(operations),並由Androidruntime向HAL取得stub的operations,再callback這些操作函數。HAL里包含了許多的stub(代理人)。Runtime只要說明「類型」,即moleID,就可以取得操作函數。Android是運行於Linuxkernel之上,但並不是GNU/Linux。因為在一般GNU/Linux里支持的功能,Android大都沒有支持,包括Cairo、X11、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。Android又以bionic取代Glibc、以Skia取代Cairo、再以opencore取代FFmpeg等等。Android為了達到商業應用,必須移除被GNUGPL授權證所約束的部份,例如Android將驅動程序移到userspace,使得Linuxdriver與Linuxkernel徹底分開。bionic/libc/kernel/並非標準的kernelheaderfiles。Android的kernelheader是利用工具由Linuxkernelheader所產生的,這樣做是為了保留常數、數據結構與宏。

Android的Linuxkernel控制包括安全(Security),存儲器管理(MemoryManagemeat),程序管理(ProcessManagement),網路堆棧(NetworkStack),驅動程序模型(DriverModel)等。下載Android源碼之前,先要安裝其構建工具Repo來初始化源碼。Repo是Android用來輔助Git工作的一個工具。

㈣ android系統的系統架構

學Android吧,理由:皮敏

1、首先,你學過Android,易於上手

2、Android市場剛剛興起,有一定的發展潛力

3、燃塌枝相對於衫純abap來說,Android適合有經驗的程序員轉型

㈤ 一般的android開發都用到了系統架構哪些層

1:android分為四個層,從高層到低層分別是應用程序層、應用程序框架層

開發一個程序,android系統框架是層層相扣,不能分開的。 應用程序層: 這個層主要指的就是用java語言編寫的運行在虛擬機上的程序,Google在最開始時就 在android系統中捆綁了一些核心的應用(核心應用的編寫必須使用應用層序框架層的API框架.
2:android 開發框架有四個層,從高層到低層分別是應用程序層、應用程序框架層
android應用開發框架是 Application Framework. 其系統架構由5部分組成,分別是:Linux Kernel、Android Runtime、Libraries、Application Framework、Applications。

㈥ android的系統結構

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文件有區別,這樣做對於程序的保密性和可靠性不是很高,通過dexmp命令可以反編譯,但這樣做符合發展規律,微軟的 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 只要說明「類型」,即 Mole 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系統的系統架構

架構詳解

Linux Kernel
Android基於Linux kernel 提供核心系統服務,例如:安全、內存管理、進程管理、網路堆棧、驅動模型。Linux Kernel也作為硬體和軟體之間的抽象層,它隱藏具體硬體細節而為上層提供統一的服務。 如果你學過計算機網路知道OSI/RM,就會知道分層的好處就是使用下層提供的服務而為上層提供統一的服務,屏蔽本層及以下層的差異,當本層及以下層發生了變化不會影響到上層。也就是說各層各盡其職,各層提供固定的SAP(ServiceAccess Point),專業點可以說是高內聚、低耦合。如果你只是做應用開發,就不需要深入了解Linux Kernel層。
Android Runtime
Android包含一個核心庫的集合,提供大部分在Java編程語言核心類庫中可用的功能。每一個Android應用程序是Dalvik虛擬機中的實例,運行在他們自己的進程中。Dalvik虛擬機設計成,在一個設備可以高效地運行多個虛擬機。Dalvik虛擬機可執行文件格式是.dex,dex格式是專為Dalvik設計的一種壓縮格式,適合內存和處理器速度有限的系統。 大多數虛擬機包括JVM都是基於棧的,而Dalvik虛擬機則是基於寄存器的。兩種架構各有優劣,一般而言,基於棧的機器需要更多指令,而基於寄存器的機器指令更大。dx 是一套工具,可以將 Java .class 轉換成 .dex 格式。一個dex文件通常會有多個.class。由於dex有時必須進行最佳化,會使文件大小增加1-4倍,以ODEX結尾。 Dalvik虛擬機依賴於Linux 內核提供基本功能,如線程和底層內存管理。
Library
Android包含一個C/C++庫的集合,供Android系統的各個組件使用。這些功能通過Android的應用程序框架(application framework)暴露給開發者。下面列出一些核心庫:系統C庫——標准C系統庫(libc)的BSD衍生,調整為基於嵌入式Linux設備媒體庫——基於PacketVideo的OpenCORE。這些庫支持播放和錄制許多流行的音頻和視頻格式,以及靜態圖像文件,包括MPEG4、 H.264、MP3、 AAC、AMR、JPG、 PNG界面管理——管理訪問顯示子系統和無縫組合多個應用程序的二維和三維圖形層LibWebCore——新式的Web瀏覽器引擎,驅動Android 瀏覽器和內嵌的web視圖SGL——基本的2D圖形引擎3D庫——基於OpenGL ES 1.0 APIs的實現。庫使用硬體3D加速或包含高度優化的3D軟體光柵FreeType——點陣圖和矢量字體渲染SQLite——所有應用程序都可以使用的強大而輕量級的關系資料庫引擎
Application Framework
通過提供開放的開發平台,Android使開發者能夠編制極其豐富和新穎的應用程序。開發者可以自由地利用設備硬體優勢、訪問位置信息、運行後台服務、設置鬧鍾、向狀態欄添加通知等等,很多很多。 開發者可以完全使用核心應用程序所使用的框架APIs。應用程序的體系結構旨在簡化組件的重用,任何應用程序都能發布他的功能且任何其他應用程序可以使用這些功能(需要服從框架執行的安全限制)。這一機制允許用戶替換組件。 所有的應用程序其實是一組服務和系統,包括:視圖(View)——豐富的、可擴展的視圖集合,可用於構建一個應用程序。包括包括列表、網格、文本框、按鈕,甚至是內嵌的網頁瀏覽器內容提供者(Content Providers)——使應用程序能訪問其他應用程序(如通訊錄)的數據,或共享自己的數據資源管理器(Resource Manager)——提供訪問非代碼資源,如本地化字元串、圖形和布局文件通知管理器(Notification Manager)——使所有的應用程序能夠在狀態欄顯示自定義警告活動管理器(Activity Manager)——管理應用程序生命周期,提供通用的導航回退功能
Application
Android裝配一個核心應用程序集合,包括電子郵件客戶端、SMS程序、日歷、地圖、瀏覽器、聯系人和其他設置。所有應用程序都是用Java編程語言寫的。更加豐富的應用程序有待我們去開發! 從上面我們知道Android的架構是分層的,非常清晰,分工很明確。Android本身是一套軟體堆疊(Software Stack),或稱為「軟體疊層架構」,疊層主要分成三層:操作系統、中間件、應用程序。從上面我們也看到了開源的力量,一個個熟悉的開源軟體在這里貢獻了自己的一份力量。

㈧ Android的系統架構包括哪些部分

Android一詞的本義指「機器人」,最初的Android主要支持手機,後來經過開發改良,逐漸擴展到平板電腦及其他一些領域上,是首個為移動終端打造的真正的開放和完整的移動軟體。

Android的系統架構和其操作系統一樣,採用了分層的架構。Android分為四個層,從高層到低層分別是應用程序層、應用程序框架層、系統運行庫層和Linux內核層。

一、應用程序
Android會同一系列核心應用程序包一起發布,該應用程序包包括客戶端,SMS短消息程序,日歷,地圖,瀏覽器,聯系人管理程序等。所有的應用程序都是使用JAVA語言編寫的。

二、應用程序框架
開發人員也可以完全訪問核心應用程序所使用的API框架。該應用程序的架構設計簡化了組件的重用;任何一個應用程序都可以發布它的功能塊並且任何其它的應用程序都可以使用其所發布的功能塊(不過得遵循框架的安全性)。同樣,該應用程序重用機制也使用戶可以方便的替換程序組件。

三、系統運行庫
Android 包含一些C/C++庫,這些庫能被Android系統中不同的組件使用。它們通過 Android 應用程序框架為開發者提供服務。

四、Linux內核層
Android內核是基於Linux 內核的修改的內核版本,它提供了用於支持Android平台的設備驅動。

㈨ android的系統架構

android系統架構分從下往上為linux 內核層、運行庫、應用程序框架層、和應用程序層
linuxkernel:負責硬體的驅動程序、網路、電源、系統安全以及內存管理等功能。

libraries和 androidruntime:libraries:即c/c++函數庫部分,大多數都是開放源代碼的函數庫,例如webkit,該函數庫負責 android網頁瀏覽器的運行,例如標準的c函數庫libc、openssl、sqlite等,當然也包括支持游戲開發2dsgl和 3dopengles,在多媒體方面有mediaframework框架來支持各種影音和圖形文件的播放與顯示,例如mpeg4、h.264、mp3、 aac、amr、jpg和png等眾多的多媒體文件格式。android的runtime負責解釋和執行生成的dalvik格式的位元組碼。

applicationframework(應用軟體架構),java應用程序開發人員主要是使用該層封裝好的api進行快速開發。

applications:該層是java的應用程序層,android內置的googlemaps、e-mail、即時通信工具、瀏覽器、mp3播放 器等處於該層,java開發人員開發的程序也處於該層,而且和內置的應用程序具有平等的位置,可以調用內置的應用程序,也可以替換內置的應用程序。

上面的四個層次,下層為上層服務,上層需要下層的支持,調用下層的服務,這種嚴格分層的方式帶來的極大的穩定性、靈活性和可擴展性,使得不同層的開發人員可以按照規范專心特定層的開發。

android應用程序使用框架的api並在框架下運行,這就帶來了程序開發的高度一致性,另一方面也告訴我們,要想寫出優質高效的程序就必須對整個 applicationframework進行非常深入的理解。精通applicationframework,你就可以真正的理解android的設計 和運行機制,也就更能夠駕馭整個應用層的開發。

㈩ Android 開發有什麼好的架構么

你說這個我想了上次還被老大批了--過度設計了。過多考慮未來的需求和變動了就設計過度了,於是出現了就真是幾十行的代碼,寫出各種類各種介面。
最近學到的倒是基於android特性進行開發,ui上可以從需求分析到android控制項的選擇比如fragment,slidingmenu,actionbar,navigation drawer等。
整體架構上,資料庫層和ui刷新,數據非同步讀取,使用contentprovider(資料庫操作像rest api一樣的風格),cursorloader,網路請求的intentservice,resultreceiver,gson等。
設計思路上,分層--還是走的mvc嘛,雖然最近也有用mvp,不過不管怎麼樣關鍵還是要有分層的意識吧;解耦--面向介面編程啊,依賴倒置都是;抽象能力:其實我覺得抽象能力很重要的,不過自己現在抽象能力也很弱,沒啥建議。
好的開源項目:我覺得倒是沒什麼統一框架,可以看看foursquare,google io app的源碼都是相當好的,android源碼永遠是值得讀的。
文中很多知識學自這逼@李彬,建議關注,不過這逼很裝逼。

編輯於 2013-09-18 9 條評論 感謝 分享 收藏 • 沒有幫助 •
舉報

贊同4反對,不會顯示你的姓名
知乎用戶,簡單易懂的現代魔法
vince wong、water soul、嚴來忠 等人贊同
Android開發,或者說移動終端開發的入門易就不可避免的精通難。低門檻和低要求導致了J2EE程序猿可能要5年才開始考慮的東西移動開發者甚至1年後就開始感到迷茫,例如架構。不才的本人與題主相仿,也是在畢業寫Android幾年後開始從如何實現轉而思考怎麼更好的實現。如何抽象,如何介面,如何實現可擴展。當時去github瘋狂的尋找開源工程讀源碼,但大多找到的也只是「寫的很漂亮的代碼」而已。移動終端單打獨斗的特點也許也註定了代碼比起架構更注重完整性和功能性。
所以現在對這點看的挺淡的,盡量將代碼寫的漂亮些,但不過多苛求。也許敏捷的大流行也從一個側面證明了移動開發不要過多的關注架構?

發布於 2013-07-31 2 條評論

贊同6反對,不會顯示你的姓名
Rocko,ID: Rocko http://zhengxiaopeng.com
知乎用戶、陳征、羅power 等人贊同
推薦幾篇文章:
App工程結構搭建:幾種常見Android代碼架構分析
Architecting Android…The clean way?
A useful stack on android #1, architecture · Saúl M.
......

編輯於 2015-03-04 添加評論

贊同2反對,不會顯示你的姓名
歐陽繼超
kaffa、匿名用戶 贊同
androidbootstrap

發布於 2013-09-30 添加評論

贊同3反對,不會顯示你的姓名
Lippi OuYang,樂於造輪子
qingchen、羅power、知乎用戶 贊同
Android學習之路Android學習之路
別人整理的幾個android開源框架值得推薦的android開源框架
別人整理的一些Android項目Trinea/android-open-project · GitHub

編輯於 2015-03-29 添加評論

贊同3反對,不會顯示你的姓名
Golion,會寫代碼 會畫畫 ACG宅
鯨歌、ibrahim steed、洪俊敏 贊同
Android本身就是一個MVC框架,Java也是一個重量級的語言。
我覺得,不需要再加新的框架了,增加團隊學習成本了。
你的精力應該花在拆解業務,分成若干個library,如何集成如何分工上面。

發布於 2015-01-01 添加評論

贊同0反對,不會顯示你的姓名
知乎用戶,程序猿/自由職業者/ruby愛好者
把代碼耦合降低,能抽象的抽象,提高代碼的復用能力。MVC模塊各司其職,不要參雜無關的東西。其實最主要的就是對業務的熟悉吧,把要實現的功能進行合理劃分抽象基本就可以寫出不錯的代碼了

發布於 2014-07-18 添加評論
http://www.hu.com/question/21406685

閱讀全文

與androiddisplay架構分析相關的資料

熱點內容
單片機編程取反 瀏覽:897
51單片機課程設計課題 瀏覽:900
手機淘寶登錄怎麼加密碼 瀏覽:486
linux快捷方式圖標 瀏覽:38
陽光車險的app叫什麼名字 瀏覽:462
購買單片機的器件時需要給商家啥 瀏覽:535
並行編譯技術的發展 瀏覽:550
阿里雲伺服器安裝管理 瀏覽:551
java手機開發教程 瀏覽:675
我的世界怎麼刪除伺服器數據 瀏覽:672
linux內存子系統 瀏覽:973
加密思維幣 瀏覽:691
魅族訪客文件夾 瀏覽:53
添加的文件夾怎麼找 瀏覽:618
程序員涉黃 瀏覽:701
maven編譯resources下的js 瀏覽:522
ubuntu文件移動命令 瀏覽:230
安卓i怎麼查找蘋果手機 瀏覽:952
雲伺服器宕機概率 瀏覽:233
在線買葯用什麼app知乎 瀏覽:816