了解Android OS體系
Android系統(tǒng)的源代碼本身及其龐大,首先我們要知道的是,其由2部分組成:Android Kernel
與 Android OS
部分。Android Kernel
部分完成了進(jìn)程管理,內(nèi)存管理等操作系統(tǒng)運行的基礎(chǔ)組件偿曙,AOSP
項目中的Android Kernel
源自Linux Kernel
,但做了大量的改動羔巢。Android OS
提供了Android系統(tǒng)特定的功能望忆,比如系統(tǒng)啟動過程,進(jìn)程之前的通們竿秆,權(quán)限管理启摄,應(yīng)用管理等。當(dāng)然幽钢,這并不是說歉备,Android Kernel
部分完全與Android OS
無關(guān),提出這一觀點基于以下2點:
- Google的
AOSP
項目中匪燕,Kernel
與Android
部分本身就是分開下載的蕾羊。 - 研究
Android Kernel
與Android OS
的人員,基本上是2類開發(fā)人員帽驯。 - 對于一般的應(yīng)用開者者來說龟再,甚至Android手機廠商的開發(fā)人員來說,大體都工作在
Android系統(tǒng)
這一區(qū)域尼变。
什么是Android Kernel
Android Kernel
的源代碼基于Linux Kernel
修改利凑,在其上做了很多的修改。其改動點主要包括:
- 對標(biāo)準(zhǔn)的Linux內(nèi)核代碼做了大量的剪裁和優(yōu)化.
- 添加了許多特有的代碼嫌术,比如采用Bionic Libc庫代替glibc庫哀澈,添加Gold-Fish平臺,
- 在Linux的基礎(chǔ)上新增了許多特有的驅(qū)動度气,比如:IPCBinder割按,LowMemory Killer,Ashmem磷籍,RAMConsole and Log Device哲虾,AndroidDebug Bridge等。
- 修改了調(diào)度器
- 為Android設(shè)備設(shè)計了新的電源管理系統(tǒng)
- 其它一些雜項
由于版權(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)核代碼。
什么是Android OS
Android OS
部分的代碼废恋,包括了硬件抽像層谈秫,Android虛擬機扒寄,系統(tǒng)運行時庫,Android框架層及部分應(yīng)用的代碼(如相冊管理拟烫,設(shè)置该编,桌面)。涉及到Google賬號體系的一系列Google自己的應(yīng)用并不包括其中硕淑。
說到這课竣,就不得不提一張經(jīng)典的圖:
如上圖所示,紅色部分以上的都是本文特指的Android OS
代碼包括的部分置媳。
如何在線快速閱讀Android代碼
Google公司的倉庫提供了Android Kernel
與Android OS
的源代碼于樟,但各種原因,目前在國內(nèi)無法訪問拇囊,好在有一些國內(nèi)的站hok迂曲,比如https://www.androidos.net.cn/sourcecode。這個網(wǎng)站提供了多種方式預(yù)覽:GitHub這種分格的與IDE風(fēng)格的寥袭。
使用Github式的在線預(yù)覽
Google公司的倉庫提供了Android Kernel與Android OS的源代碼路捧,但各種原因,目前在國內(nèi)無法訪問传黄,好在有一些國內(nèi)的站hok杰扫,比如https://www.androidos.net.cn/sourcecode。這個網(wǎng)站提供了多種方式預(yù)覽:GitHub這種分格的與IDE風(fēng)格的尝江。以查看OAT相關(guān)式代碼代碼舉例涉波,可以通過以下鏈接訪問以便使用Github這種方式:DEX轉(zhuǎn)OAT,
OAT文件格式炭序,也可以在這個鏈接以左樹右代碼的方式閱讀:DEX轉(zhuǎn)OAT啤覆。