如何閱讀Android系統(tǒng)源代碼

了解Android OS體系

Android系統(tǒng)的源代碼本身及其龐大,首先我們要知道的是,其由2部分組成:Android KernelAndroid OS 部分。Android Kernel部分完成了進程管理,內(nèi)存管理等操作系統(tǒng)運行的基礎(chǔ)組件,AOSP項目中的Android Kernel源自Linux Kernel,但做了大量的改動。Android OS提供了Android系統(tǒng)特定的功能,比如系統(tǒng)啟動過程,進程之前的通們,權(quán)限管理,應(yīng)用管理等。當然,這并不是說,Android Kernel部分完全與Android OS無關(guān),提出這一觀點基于以下2點:

  • Google的AOSP項目中,KernelAndroid部分本身就是分開下載的。
  • 研究Android KernelAndroid OS的人員,基本上是2類開發(fā)人員。
  • 對于一般的應(yīng)用開者者來說,甚至Android手機廠商的開發(fā)人員來說,大體都工作在Android系統(tǒng)這一區(qū)域。

什么是Android Kernel

Android Kernel的源代碼基于Linux Kernel修改,在其上做了很多的修改。其改動點主要包括:

  • 對標準的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架構(gòu)圖

如上圖所示,紅色部分以上的都是本文特指的Android OS代碼包括的部分。

如何在線快速閱讀Android代碼

Google公司的倉庫提供了Android KernelAndroid 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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容