2013年11月27日 星期三

[Android]Android 系統架構圖及開發之轉檔過程


Android系統架構圖




Android的系統架構和其操作系統一樣,採用了分層的架構。
從架構圖看,Android分為四個層,
從高層到低層分別是:

  • 應用程序層
  • 應用程序框架層
  • 系統運行庫層-分二個部份為程序庫及Android 運行庫
  • Linux核心層


一、應用程序

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

二、應用程序框架

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

隱藏在每個應用後面的是一系列的服務和系統, 其中包括;

  • 豐富而又可擴展的視圖(Views),可以用來構建應用程序, 它包括列表(lists),網格(grids),文本框(text boxes),按鈕(buttons), 甚至可嵌入的web瀏覽器。
  • 內容提供器(Content Providers)使得應用程序可以訪問另一個應用程序的數據(如聯繫人數據庫), 或者共享它們自己的數據
  •  資源管理器(Resource Manager)提供非代碼資源的訪問,如本地字符串,圖形,和佈局文件( layout files )。
  • 通知管理器(Notification Manager) 使得應用程序可以在狀態欄中顯示自定義的提示信息。
  • 活動管理器( Activity Manager) 用來管理應用程序生命週期並提供常用的導航回退功能。



三、系統運行庫

1、程序庫

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視圖。
  • SGL - 底層的2D圖形引擎
  • 3D libraries - 基於OpenGL ES 1.0 APIs實現;該庫可以使用硬件3D加速(如果可用)或者使用高度優化的3D軟加速。
  • FreeType -位圖(bitmap)和矢量(vector)字體顯示。
  • SQLite - 一個對於所有應用程序可用,功能強勁的輕型關係型數據庫引擎。



2、Android 運行庫

Android 包括了一個核心庫,該核心庫提供了JAVA編程語言核心庫的大多數功能。

每一個Android應用程序都在它自己的進程中運行,都擁有一個獨立的Dalvik虛擬機實例。 Dalvik被設計成一個設備可以同時高效地運行多個虛擬系統。 Dalvik虛擬機執行(.dex)的Dalvik可執行文件,該格式文件針對小內存使用做了優化。同時虛擬機是基於寄存器的,所有的類都經由JAVA編譯器編譯,然後通過SDK中的"dx" 工具轉化成.dex格式由虛擬機執行。

Dalvik虛擬機依賴於linux內核的一些功能,比如線程機制和底層內存管理機制。

四、Linux 內核心

Android 的核心系統服務依賴於Linux 2.6 內核,如安全性,內存管理,進程管理, 網絡協議棧和驅動模型。 Linux 內核也同時作為硬件和軟件棧之間的抽象層。



Android 應用程式開發之轉檔過程

相關參考網站:
http://android.91.com/content/2009-03-10/20090310200215684.shtml

http://style77125tech.pixnet.net/blog/post/161633594-%5Bandroid%5D-%E7%B3%BB%E7%B5%B1%E6%9E%B6%E6%A7%8B


















其它文章

沒有留言:

張貼留言

標籤

Oracle (150) Oracle DB (144) Oracle_DB (143) Oracle SQL (135) JAVA (84) css-基本類 (65) MySQL (59) CSS Selector (58) jQuery (49) JavaScript-基本類 (39) Spring Boot (38) JavaScript (37) JavaScript HTML DOM (37) JavaScript-HTML_DOM (36) CSS3 (30) JAVA-基本類 (28) jQuery UI (27) Apache (23) Oracle GROUP BY (20) datepicker (20) Android (18) Oracle Date (17) c (17) JAVA-lang套件 (16) Linux (16) Oracle Sub Query (16) Spring-基本類 (16) jQuery-基本類 (16) MySQL-進階系列教學 (15) Android基本類 (14) Grails (14) Oracle join (14) SQLite (13) Spring (13) WIN7-基本類 (13) grails-基本類 (13) linux cent os (13) CKEditor (12) JAVA-流程控制類 (12) JAVA_Spring (12) PHP (11) Spring MVC (11) MySQL-基本系列教學 (10) Notepad (10) Notepad++ (10) SQLite for java (10) Windows (10) c/c++ (10) eclipse (9) jQuery-Selector (9) sqldeveloper (9) DB_Toad (8) JAVA_IDE_Eclipse (8) JavaScript-String類 (8) MySQL DB Toad (8) MySQL-DATE相關 (8) MySQL-函式相關 (8) Spring Bean (8) Android Studio (7) HTML5 (7) Hibernate (7) JAVA-OCWCD (7) JavaScript-陣列類 (7) Docker (6) JAVA-程式分享 (6) JAVA.util套件 (6) JavaScript-數學類 (6) MinGw (6) MySQL-其它類 (6) Servlet (6) centos (6) Apache_Tomcat (5) Apache套件_POI (5) CSS (5) JavaScript-Date物件 (5) JavaScript-其它類 (5) PostgreSQL (5) httpd (5) log4j (5) 基本資訊 (5) 開發工具 (5) CSS Properties (4) Dev-C++ (4) IntelliJ IDEA (4) Oracle DDL (4) Sublime (4) TortoiseSVN (4) apache_Maven (4) Android NDK (3) Eclipse IDE for C/C++ (3) Hibernate-基本類 (3) JAVA-問題 (3) JAVA-綀習分享 (3) JVM (3) Linux 指令 (3) Proxy Server (3) Spring Mobile (3) Spring web (3) Squid (3) VirtualBox (3) maven (3) zk (3) 生活其它 (3) Bootstrap (2) Filter (2) JAVA_IO (2) JAVA_其它_itext套件 (2) JBoss-問題 (2) JSP (2) Jboss (2) Listener (2) MySQL-語法快速查詢 (2) Spring AOP (2) Spring Batch (2) Spring Boot Actuator (2) Spring i18n (2) Subversive (2) Tomcat 8 (2) UML (2) WebJars (2) WinMerge (2) c++ (2) c語言綀習題 (2) jQuery Mobile (2) jQuery-事件處理 (2) jQuery-套件類 (2) putty (2) svn (2) weblogic (2) Apache_JMeter (1) Apache套件_BeanUtils (1) Apache套件_StringUtils (1) Base64 (1) Google API (1) HTML5-基本類 (1) Heap (1) JAVA 7 (1) JAVA SE 、JAVA EE、JAVA ME (1) JAVA 日期 (1) JAVA-OCJP (1) JAVA-WEB (1) JAVA_IDE (1) JAVA其它 (1) JBoss Server (1) JDK (1) JMX (1) JRE (1) Java RMI (1) Java String (1) Joda Time (1) Linux_其它 (1) MySQL教學 (1) Oracle_VirtualBox (1) SQL Server (1) SWT (1) Session (1) Stack (1) Struts 2 (1) Tool (1) ZK Studio (1) csv (1) grails-其它類 (1) jQuery-進階 (1) java mail (1) java web (1) java8 (1) jsoup (1) mockmvc (1) modules (1) tomcat (1) win10 (1) 其它類 (1) 圖片工具 (1) 模擬器 (1) 讀書分享 (1) 開發資訊 (1)

精選文章

初學 Java 的 HelloWorld 程式

撰寫一個JAVA程式 public class HelloWorld{ public static void main(String[ ] args){ System.out.println("我第一支Java程式!!"); } } ...