1.android體系結構介紹

一、Android的介紹

android介紹見百度百科:Android的介紹,度娘把Android介紹的這么清楚,如果谷歌是Android的爹,那度娘就是娘了。

?

二、Android的架構圖

?

android系統主要分四層:

從上致下:

1、應用層

2、應用框架層

3、核心類庫層

4、linux內核層

?

應用層:

用java開發的應用,分系統應用和非系統應用(開發人員開發的)。

系統應用和非系統應用的區別:

1、系統應用是不能卸載(如果沒有root權限)。非系統應用可以卸載。

2、系統應用可以調用更多的API,非系統應用只能調用SDK中的API,有些API,谷歌不讓開發者調用,開發者要想使用,只能通過意圖Intent調用系統應用。

?

應用框架層:

是對核心類庫調用的實現,核心類庫是用C和C++開發,在開發時遵循規則可以用C和C++開發android應用,但這個開發起來成本太高,太費時,比塞班系統的開發還要難,比J2ME的開發還要難,谷歌為了簡化開發,就用java寫了調用核心類庫的方法,把這些方法封裝成API給開發者調用。因此,應用框架層是用java寫的,是對核心類庫層的調用。

因為應用框架層是用java寫的,所以應用層首選的開發語言是java。

核心類庫層:

為了讓安卓系統具備強大的功能,需要強大的類庫,這些類庫不都是谷歌開發的,大都是比較好的開源項目,谷歌直接拿來用,或者改改直接用。

openglES:游戲開發開源引擎,不是谷歌開發的。
surfaceManager:開源界面管理引擎,不是谷歌開發的。
webkit:開源瀏覽器內核。不是谷歌開發的。
SGL:開源圖形處理引擎,不是谷歌開發的。
SQLITE:android自帶的數據庫。不是谷歌開發的。

--------------------------------
FreeType:字體庫
Media Framework:媒體框架
SSL:基于HTTP的安全協議

?

因為應用框架層是用java寫的,所以android需要java運行時,于是谷歌就在核心類庫層增加了core libraries,dvm。

core libraries:

是java的api,對應用層和應用架構層的java提供java環境支持。

DVM:

在2.3之前是直接用JAVA虛擬機JVM的,因為甲骨文起訴谷歌說安卓侵權,谷歌就把JVM改了,開發出了更適合手機的DVM。因為java的程序在運行時需要轉碼,DVM的功能就是把.class文件轉為機器碼。

?

linux核心層:

包含了硬件接口,用于android系統的移植。

各種硬件驅動:顯示器驅動,攝像頭驅動,閃存驅動,鍵盤驅動,鍵盤驅動,wifi驅動,音頻驅動,電源驅動。

如果做Android移植,需要學習Linux層,核心類庫層,應用框架層。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/538066.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/538066.shtml
英文地址,請注明出處:http://en.pswp.cn/news/538066.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

mysql seconds_behind_master_MySQL中的seconds_behind_master的理解

通過show slave status查看到的Seconds_Behind_Master,從字面上來看,他是slave落后master的秒數,一般情況下,也確實這樣,我們可以通過Seconds_Behind_Master數字查看slave是否落后于master,但是在一些環境中…

2.JVM和DVM之間的區別

1、JVM .java----->.class----->.jar 運行在內存的 棧 棧虛擬機 2、DVM .java----->.class------>.dex-----(加上其它資源文件)---->apk 運行在CPU的 寄存器 寄存器虛擬機 ---------------------------------------------------------- 3、DVM與JVM的區…

Node.js模塊以及模塊加載機制

2019獨角獸企業重金招聘Python工程師標準>>> Node.js中的模塊 在Node.js中,以模塊為單位劃分功能,通過一個完整的模塊加載機制使得開發人員可以將應用程序劃分為多個不同的部分。模塊的使用可以提高代碼重用率,提高應用程序的開發…

wordpress支持MySQL5.5_wordpress數據庫版本為5.5以上導出不能在5.5以下的版本導入的問題解決...

自從wordpress4.2版本出現以后,已經可以支持utf8mb4數據編碼,那么如果您的php空間的數據庫版本是mysql5.1的,那么很多站長朋友從mysql5.5導出來再導入到5.1的數據中的時候,那么問題來了,就會報錯Unknown collation ‘u…

i++與++i的區別

代碼: int i1; int ai;//先賦值,然后再自增,它等價于 a i ; i i 1System.out.println("a"a);System.out.println("i"i);System.out.println("---------------");int j1; int bj;//先自增,后賦值…

獲取數據庫名稱dbName

2019獨角獸企業重金招聘Python工程師標準>>> Autowired DataSource ds; connection ds.getConnection(); tring dbName connection.getCatalog(); connection.close(); 轉載于:https://my.oschina.net/u/2351011/blog/1925838

mysql 5.7 密碼過期_mysql5.7 密碼過期了怎么辦

mysql5.7 密碼過期了怎么辦發布時間:2020-05-08 14:11:09來源:億速云閱讀:148作者:三月下文主要給大家帶來mysql5.7 密碼過期了怎么辦,希望這些文字能夠帶給大家實際用處,這也是我編輯mysql5.7 密碼過期了怎…

我的開源項目

Android App 循環訪問網站app app介紹:http://blog.csdn.net/zengmingen/article/details/78016167 開源地址:https://gitee.com/zengmg/VistWeb

初始化bean(二)—— 緩存部分

上一篇博客,講了下spring如何初始化bean的 當然,當時只討論了很簡單的一種情況:初次加載bean時候,并且只考慮了單例。 這篇博客會試著理清楚spring在加載bean的時候的一部分緩存。關于解決循環引用所使用的緩存,可以看…

chkconfig: 2345 20 80

#chkconfig: 2345 20 80 2345表示系統運行級別是2,3,4或者5時都啟動此服務,20,是啟動的優先級,80是關閉的優先級,如果啟動優先級配置的數太小時如0時,則有可能啟動不成功,因為此時可…

android 按鍵上浮動畫_android – 浮動動作按鈕動畫

從Zielony的回答中,我確切地說到了我想要的地方.下面是正確應用效果的代碼.scale_fab_in.xmlandroid:duration"500"android:fromXScale"0"android:fromYScale"0"android:pivotX"50%"android:pivotY"50%"android:toXScale&qu…

性能測試調優篇---未完待續

性能測試調優一:1.首先,看下選測交易的整個走向純系統內部交易:選測交易如果是系統內的交易,每一步請求都和系統交互幾次,訪問了幾個數據庫,訪問了數據庫的那幾張表??該交易走了那幾…

mysql連接idea詳細教程_idea配置連接數據庫的超詳細步驟

學習時,使用IDEA的時候,需要連接Database,連接時遇到了一些小問題,下面記錄一下操作流程以及遇到的問題的解決方法。一、 連接操作簡介:介紹如何創建連接,具體連接某個數據庫的操作流程。1.1 創建連接打開i…

redis單節點安裝

1、下載 redis :https://redis.io/ redis 提供的是 源碼包,需要編譯。 2、Linux下安裝gcc 和 tcl tcl介紹 命令:yum install gcc tcl 3、將redis的源碼包,放到 /usr/local/src 下 tar -zxvf redis-4.0.6.tar.gz 4、安裝redi…

Shell編程—企業生產案例

Linux系統Shell編程—企業生產案例(一) 企業數據庫可以說是重點保護對象啊,沒有之一,數據在當今企業里就是生命線,因此今天就來說一說,如何通過shell腳本來檢查或監控MYSQL數據庫服務是否正常?&…

ManicTime軟件破解

這款軟件用來記錄電腦上程序的運行時間。方便天天用電腦的查看:今天我的時間都去哪兒了? 專業版不免費,而且需要 67 美元。 免費版和專業版的區別 破解補丁和官方軟件下載(截止博文發布,官方最新版本 版本&#xff1…

mysql根據ID的順序查找_求救:mysql 如何根據給定的 ID順序查找結果?

各位大神,現在我遇到了一個難題需要你們的幫助。有下面兩個表post表:文章表。record表:記錄表,用于記錄用戶閱讀順序。record表 根據用戶的閱讀文章順序用一個字段 postid 記錄 post 表的主鍵ID,既 record.postid 的外鍵為 post.i…

DIY—USB學習板設計以及驅動開發

暑假在Intel OTC做訪問學者時,看到公司有兩個小巧的USB設備-溫度計和LED音樂播放器,用于交大學生的Linux Kernel教學中。但看似簡單的這些設備,還是從國外購買而得。因此,從intel回來之后,我就告訴學生能否設計一種USB…

ps -ef |grep

[rootzengmg 6379]# ps -ef | grep redisroot 1978 1 0 09:35 ? 00:00:16 /usr/local/bin/redis-server 127.0.0.1:6379 root 116656 2708 0 15:56 pts/1 00:00:00 grep redis 字段含義如下: UID PID PPID CSTIME…

python入坑指南_Rust入坑指南:萬物初始

有沒有同學記得我們一起挖了多少個坑?嗯…其實我自己也不記得了,今天我們再來挖一個特殊的坑,這個坑可以說是挖到根源了——元編程。元編程是編程領域的一個重要概念,它允許程序將代碼作為數據,在運行時對代碼進行修改…