文章目錄
android體系結構
Android系統的底層是基於linux系統(linux2.6內核)之上,和其他的操作系統一樣Android也採用分層的架構,從底到高分別是:Linux內核層(Linux Kernel)、Android系統運行層(包括Android Runtime和原生態的c/c++庫Native C/C++ Libraies)、Java Api框架層(Java Api Framework)、Applications 應用層。
Linux kernel
Android系統建立在linux2.6之上。linux內核提供了 安全性、內存管理、進程管理、網路協議棧和驅動模型等核心系統服務,即Android系統的底層硬件驅動由Linux kernel內核負責。除此之外,linux內核也是系統硬件和軟件疊層之間的抽象層。
Android系統運行層
C/C++庫
Android包含了C/C++庫的集合,通常情況下Android應用開發者不能直接調用,需要通過java Api層來調用。
- 系統C庫
一個從BSD系統派生出來的標準出來C系統庫(libc),並且專門爲嵌入式Linux設備調整過。 - 媒體庫
基於PacketVideo的OpenCORE,這套媒體庫支持播放和錄製音頻和視頻格式,以及查看靜態圖片。主包括MPEG4、H.264、MP3、AAC、AMR、JPG、PNG等多媒體格式。 - Surface Manager
管理對顯示子系統的訪問,並可以對個應用程序中的2D和3D圖像提供無縫整合。 - LibWebCore
一個全新的Web瀏覽器引擎,該引擎爲Android瀏覽器提供支持,也爲WebView提供支持,WebView完全可以嵌入開發者自己的應用程序中。 - SGL
底層的2D圖像引擎。 - 3D libraries
基於OpenGL ES API實現的3D系統,這套系統3D庫既可以使用硬件3D加速,也可以使用高度優化的軟件3D加速。 - FreeType
位圖和向量字體顯示。 - SQLite
供所有應用程序使用的功能強大的輕量級關係數據庫。
Android Runtime
Android運行時由兩部分組成:Android核心庫集和ART。其中核心庫提供了java語言核心庫所能使用的絕大部分功能,而虛擬機(和java的虛擬機類似)負責運行Android應用程序。
- ART、Dalvik、AOT、JIT
在Android5.0之前Android的運行時由Dalvil虛擬機和Android核心庫組成,它採用了一種JIT(just in time “即時編譯技術”)的解釋器進行動態編譯並執行,這就導致Android的軟件在運行速度比較慢。而ART模式使用的AOT(Ahead Of Time “提前編譯技術”),就是在程序第一次安裝時,字節碼就會預先編譯成機器碼,這樣就避免了每次運行時都需要編譯程序,從而提高程序的啓動和運行速度,但這樣會導致程序所需要的空間比較大,可以理解成一種空間換時間的技術。
Java Api框架層
Java Api框架層提供了大量的Api供開發者使用,除了作爲應運程序開發的基礎之外,也是軟件複用的重要手段,任何一個應用程序都可以發佈他的功能模塊(發佈時需要準守跨框架的約定)。
Applications(應用程序)框架層
所有的Android應用程序和我們編寫的程序都會被安裝在這層。
Android Studio的工程目錄
其中文件的代碼、資源等內容基本都是放在App文件夾下的,下面將介紹一下App文件夾中的重要內容。
- build
build目錄是在程序編譯時自動生成的文件,包括一些零時文件,還有生成的.apk文件就在該目錄下。 - libs
存放項目中使用的第三方jar包,該目錄下的jar包會自動添加到構建路徑中。 - src/AndroidTest
用來編寫Android Test測試永獵的,可以對項目進行一些自動化測試。 - src/main/java
存放編寫的java代碼 - src/main/res
存放需要的資源文件drawable:存放圖片
mipmap: 存放應用圖標
values: 存放字符串、顏色、樣式配置
layout:佈局文件 - src/main/AndroidManifest.xml
安卓應用清單文件,該文件時每個Android項目所必需的,他是整個android應用的全局描述文件。該文件說明了該應用的名稱,所使用的圖標以及包含的組件等。 - test
此處用來編寫unit Test測試用例,可以對項目進行自動化測試。