真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Android內(nèi)核開發(fā):源碼的版本與分支詳解-創(chuàng)新互聯(lián)

我想很多初學(xué)者或許跟我一樣,看完Android×××相關(guān)的文章以后,就開始興致勃勃地去下載Android源碼了,但是下載完了源碼后,有沒有像我一樣產(chǎn)生如下幾個(gè)困惑呢?

成都創(chuàng)新互聯(lián)公司專注于網(wǎng)站建設(shè)|成都網(wǎng)站維護(hù)公司|優(yōu)化|托管以及網(wǎng)絡(luò)推廣,積累了大量的網(wǎng)站設(shè)計(jì)與制作經(jīng)驗(yàn),為許多企業(yè)提供了網(wǎng)站定制設(shè)計(jì)服務(wù),案例作品覆蓋成都木包裝箱等行業(yè)。能根據(jù)企業(yè)所處的行業(yè)與銷售的產(chǎn)品,結(jié)合品牌形象的塑造,量身制作品質(zhì)網(wǎng)站。

(1) Android版本有哪些分支可用?每個(gè)分支的TAG是什么?

(2) Android×××完了怎么沒有看到Linux內(nèi)核代碼?Android源碼對應(yīng)Linux內(nèi)核是否可以從kernel.org官網(wǎng)去下載?Android對標(biāo)準(zhǔn)的Linux內(nèi)核做了哪些修改?

(3) Android源碼分支與Linux版本分支的對應(yīng)關(guān)系是什么樣的?高版本的Android源碼能否使用低版本的Linux內(nèi)核?或者低版本Android源碼能否使用高版本的Linux內(nèi)核?

(4) 開發(fā)板廠商提供的Android源碼與AOSP官網(wǎng)下載的Android源碼是什么關(guān)系呢?

作為我的《Android內(nèi)核開發(fā)》系列文章的第三篇,本文主要來解答一下上面提到的幾個(gè)問題。

1.  Android版本有哪些分支可用?每個(gè)分支的TAG是什么?

Android官網(wǎng)詳細(xì)地介紹了當(dāng)前Android的各個(gè)版本名稱、Version、對應(yīng)的API Level、Branch TAG、以及Supported devices,該鏈接地址如下:

http://source.android.com/source/build-numbers.html

由于官網(wǎng)被墻,這里我也給出了一份保存下來的離線html文檔,你可以下載下來用瀏覽器打開查看,地址如下:

https://github.com/Jhuster/AOSP/tree/master/documents

當(dāng)然,想查看當(dāng)前可用的Android源碼分支和版本,也可以在下載好的Android源碼根目錄下執(zhí)行如下命令:

$ git --git-dir .repo/manifests/.git/ branch -a

或者

$ cd .repo/manifests
$ git branch -a | cut -d / -f 3

得到的結(jié)果示例如下(只截取了部分):

Android內(nèi)核開發(fā):源碼的版本與分支詳解

那么,如果你想切換到其他Android分支,只需要重新執(zhí)行 repo init 和 repo sync 即可,示例如下:

$ repo init -b android-4.2.2_r1 
$ repo sync

2.  Android源碼與Linux內(nèi)核代碼的關(guān)系?

文章開頭提到的第二個(gè)問題主要涉及到Android源碼與Linux內(nèi)核代碼的關(guān)系,我們首先要了解一個(gè)重要的概念:

Android并沒有使用標(biāo)準(zhǔn)的Linux內(nèi)核,而是做了很多的修改。

Android對標(biāo)準(zhǔn)的Linux內(nèi)核代碼做了大量的剪裁和優(yōu)化,并且添加了許多特有的代碼,主要包括:自定義UI系統(tǒng),采用Bionic Libc庫代替glibc庫,添加Gold-Fish平臺,編寫專有的驅(qū)動(dòng)程序,如Binder、Logger、PowerManager等等。

由于版權(quán)分歧等原因,這些修改并沒有merge到Linux主分支中去,因此,我們不能直接從Linux Kernel的官網(wǎng)(kernel.org)去下載適用于Android源碼的Linux內(nèi)核代碼,而是要到Google官網(wǎng)提供的kernel網(wǎng)址去下載經(jīng)過修改后的Linux內(nèi)核代碼。

Google提供了多個(gè)版本的Linux Kernel,分別對應(yīng)不同的設(shè)備或者廠商版本,你可以通過 git clone 命令來完成下載,如下所示:

Android內(nèi)核開發(fā):源碼的版本與分支詳解

如果你只是使用Android模擬器來跑Android內(nèi)核,那么就可以選擇goldfish版本作為你的Linux Kernel,如果你手頭有上述內(nèi)核支持的設(shè)備,那么,你就下載對應(yīng)的kernel即可。

那么,如果你手頭的設(shè)備或者開發(fā)板不在上述支持的列表中怎么辦呢?

放心,一般而言,Android開發(fā)板的廠商會在上述Linux Kernel的基礎(chǔ)上針對自己的開發(fā)板修改適配出一套可用的Linux Kernel的,你只需要到廠商的官網(wǎng)或者論壇查找對應(yīng)的代碼即可。對于自己設(shè)計(jì)開發(fā)的板子,則需要下載相近的kernel代碼(如CPU型號相同),然后針對性的修改和移植即可。

3.  Android分支與Linux分支的關(guān)系

Android版本迭代更新的過程中,Linux Kernel也在不斷的迭代更新,因此,往往新的Android版本會使用較新的Linux內(nèi)核分支,具體的分支對應(yīng)關(guān)系我在Google官網(wǎng)上沒有找到,但是在維基百科和stackoverflow上找到了一份表格,如下所示:

Android內(nèi)核開發(fā):源碼的版本與分支詳解

維基百科講的更加詳細(xì),具體介紹了每一個(gè)Android分支到底有哪些修改,地址如下:

http://en.wikipedia.org/wiki/Android_version_history

一般情況下,不同的Android分支最好能使用對應(yīng)的Linux內(nèi)核分支版本,這樣才能保證系統(tǒng)的正常編譯通過和運(yùn)行無誤,但是,也可以詳細(xì)了解某個(gè)Android版本對應(yīng)的Linux內(nèi)核到底做了哪些修改,并且把這些修改移植到其他版本的Linux內(nèi)核上,也是可以實(shí)現(xiàn)低版本的Android運(yùn)行在高版本的Linux內(nèi)核上的,當(dāng)然,反過來難度比較大,因?yàn)橐话愀甙姹镜腁ndroid內(nèi)核會用到高版本的Linux內(nèi)核特性,移植起來會麻煩很多。

4.  廠商提供的Android版本與AOSP的關(guān)系

很多廠商會提供專門的針對該開發(fā)板的Android×××地址,那么,我們是否可以直接使用從AOSP官網(wǎng)上下載的Android源碼呢?

廠商一般會對官網(wǎng)的Android源碼進(jìn)行修改,但是修改的部分一般會打個(gè)patch包,因此,你只需要下載廠商提供的patch包,并且將手頭的官網(wǎng)上下載的Android源碼切換到對應(yīng)的分支,打上patch補(bǔ)丁即可。

5.  小結(jié)

關(guān)于Android源碼的版本與分支就介紹到這里了,有任何疑問歡迎留言或者來信lujun.hust@gmail.com交流,也歡迎關(guān)注我的新浪微博 @盧_俊 獲取最新的文章和資訊。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


名稱欄目:Android內(nèi)核開發(fā):源碼的版本與分支詳解-創(chuàng)新互聯(lián)
標(biāo)題來源:http://weahome.cn/article/eehos.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部