国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android App的運行環境及Android系統架構概覽

2020-01-02 07:01:20
字體:
來源:轉載
供稿:網友

Android基于linux內核,面向移動終端的操作系統。主要包括以下幾個方面:

Application Framework:
這一層為應用開發者提供了豐富的應用編程接口,如 Activity Manager,Content Provider,Notification Manager,以及各種窗口 Widget 資源等。所有的APP都是運行在這一層之上。
Dalvik 虛擬機:
Dalvik VM采用寄存器架構,而不是JVM的棧架構,更適于移動設備。java源代碼經過編譯成為.class字節碼文件,然后由谷歌提供的 dx工具將其轉化為Dalvik可識別的.dex文件。
Linux kernel:
每個APP應用程序由一個獨立的Dalvik VM來解釋執行,而一個Dalvik VM實例對應一個linux內核進程。
所以說,每個APP之間完全隔離,資源獨立。使得每個APP更加安全,但也不利于進程間通信

201638163718507.png (572×114)

Android官方介紹

201638163824918.png (486×740)

Android 系統架構

Application framework
大部分開發者十分關心這一層。你必須要了解開發者會接觸到的所有API接口,大部分接口都與硬件抽象層(HAL層)接口一一對應,而且它們會告訴你如何實現你自己的驅動。

Binder IPC
Binder進程間通信機制幫助Application framework層能夠跨進程并且調用系統級服務。從根本上講,它幫助高級別的framework的API接口與Android系統服務進行交互。

系統服務
大部分Application framework api具備的功能都要依靠與某種系統服務進行通信從而操作底層硬件。系統服務根據不同的功能分成了若干模塊組件,例如Window Manager, Search Service, or Notification Manager。系統服務主要包含兩大塊:系統和媒體。前者對應的服務包含如Window Manager 或 Notification Manager,后者對應的服務都與播放或記錄媒體有關。
硬件抽象層Hardware abstraction layer (HAL)
硬件抽象層可以作為一個標準接口讓Android系統調用設備驅動層而不用管這些驅動和硬件時如何實現的。


Linux Kernel
大多數情況下,你自己開發設備驅動和開發linux設備驅動時一樣的。Android挑選了一個特定的linux內核版本,這個版本包含了如wakelocks(一個內存管理系統),Binder IPC驅動和其他一些特征,這些特征對于像Android一樣的移動嵌入式平臺都非常重要。你也可以根據自己的需求選擇合適的kernel版本,只要它能支持一些必要的屬性如Binder IPC驅動等。但是,我們仍然推薦你使用最新版本的Android內核。

相關知識點:
應用程序進程間隔離機制:
Android系統包括四層架構:從底層往上依次是Linux kernel層、C/C++函數庫與Android運行時環境(Dalvik VM等)層、Android Framwork框架層、應用程序層。其中,Android運行時環境層類似Java里的JRE層,主要用來運行java程序,不過此處的虛擬機是Dalvik虛擬機。每一個Android應用程序都運行在單獨的Davlik進程里,Dalvik虛擬機針對同時高效運行多個虛擬機而優化,在這一層實現了應用程序的進程間隔離。

Dalvik虛擬機與JVM區別:

JVM直接從.class或Jar包中加載字節碼解釋運行,Dalvik通過DX工具將.class文件編譯為.dex文件(Dalvik Executable)來運行。
JVM采用棧結構,而Dalvik采用寄存器結構,更適于移動設備。
為何Android要采用Dalvik虛擬機而不是JVM呢?

大多數虛擬機(包括JVM)都是基于棧的,而Dalvik虛擬機則是基于寄存器的,性能更好,不過也導致硬件通用性略差;
運行專有.dex文件。DX工具對.class文件編譯時,去除里面的冗余信息,并把所有.class文件整合到一個文件中,提高了性能。同時DX工具還會對.dex文件進行性能優化。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 武川县| 伽师县| 揭东县| 来宾市| 大理市| 宜兰市| 乌拉特中旗| 崇阳县| 鱼台县| 玉溪市| 察雅县| 从化市| 察哈| 遵化市| 西充县| 长寿区| 丹棱县| 江西省| 朝阳县| 山西省| 岐山县| 南城县| 滦南县| 奉化市| 大兴区| 北海市| 平度市| 聂拉木县| 福清市| 齐河县| 微山县| 丹东市| 嘉善县| 东乡县| 陈巴尔虎旗| 邮箱| 辽宁省| 合江县| 龙井市| 防城港市| 长子县|