獲取Android源碼,初識源碼模塊架構

Android開發(fā)者在學習到一定的階段時,需要從底層認識Android,理解其實現(xiàn)的原理和機制,才能更好地進一步提升自己的能力。這個坎,便是初學者難以逾越的鴻溝。

而擁有源碼,是學習的必備條件。
下面由筆者來為大家介紹在windows下獲取源碼的流程:

首先,讀者需要下載Linux模擬環(huán)境搭建工具Cygwin ( 因為Android基于Linux開發(fā) )

打開鏈接如圖:


Paste_Image.png

直接點擊 setup-x86_64.exe 下載即可

所得到的文件如圖:


Paste_Image.png

打開 setup-x86_64.exe ,點擊下一步

Paste_Image.png

選擇 Install from Internet ,點擊下一步

Paste_Image.png

點擊 Browse 選擇Root Directory (即文件安裝的根目錄)

Paste_Image.png

再次選擇臨時文件目錄

Paste_Image.png

選擇 Direct Connetion , 點擊下一步

Paste_Image.png

選擇一個下載站點,可任意選擇,一般較近的站點速度會比較快
這里筆者選擇 ftp://ftp.ntu.edu.tw,點擊下一步

Paste_Image.png

等待安裝

Paste_Image.png

在Search中輸入 curl

Paste_Image.png

點擊 All 右邊的 Default 切換狀態(tài)至 Install,點擊下一步

Paste_Image.png

等待安裝

Paste_Image.png

等待安裝

Paste_Image.png

安裝完畢后,可在桌面看到 Cygwin64 Terminal

Paste_Image.png

此時不要著急打開 Cygwin64 Terminal ,讀者需重新回到原安裝目錄再次打開 setup-x86_64.exe ,重復上述步驟,在Search中輸入 git 、python 繼續(xù)安裝 gitpython 工具

過程有點繁瑣,且耗時比較長,但為了跨越這個鴻溝,不再停留于表面,讀者必須有耐心。

準備工具做好后,我們即可運行桌面的 Cygwin64 Terminal ,運行我們的 Linux 模擬環(huán)境了。

接下來需要在Linux模擬環(huán)境下執(zhí)行獲取代碼操作,整個操作流程可參考官網(wǎng) Downloading the Source ( 如果遇到翻墻也無法打開的情況,只能稍后重試或搜索其他博文 )

下面筆者為大家列舉關鍵操作過程

$ mkdir ~/bin
$ PATH=~bin:$PATH
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
$ mkdir AndroidCode
$ cd AndroidCode
$ git config --global user.name "Your Name"
$ git config --global user.email "you@example.com"
$ repo init -u https://android.googlesource.com/platform/manifest

這里筆者演示下載 android-5.0.0 源碼

$ repo init -u https://android.googlesource.com/platform/manifest -b android-5.0.0_r1

初始化源碼

./repo init -u https://android.googlesource.com/platform/manifest -b android-5.0.0_r1

同步代碼 ( 同步過程也比較緩慢,讀者需要有耐心 )

$ repo sync

通過上述過程,即可得到android-5.0.0_r1源碼

如果讀者下載有困難,可以直接下載筆者在百度云上共享的android-5.0.0_r1源碼

以android-5.0.0_r1為例,我們來看看源碼的目錄結構:

Paste_Image.png

下面筆者對其結構作如下介紹:

一、總體結構:
【1】 abi: abi相關代碼,abi:application binary interface,應用程序二進制接口
【2】 art: 全新的運行環(huán)境,需要和Dalvik VM區(qū)分開來
【3】 bionic: bionic C庫
【4】 bootable: 啟動引導相關代碼
【5】 build: 存放系統(tǒng)編譯規(guī)則及generic等基礎開發(fā)配置包
【6】 cts: Android兼容性測試套件標準
【7】 dalvik: dalvik Java虛擬機
【8】 developers: 開發(fā)者相關
【9】 development: 應用程序開發(fā)相關
【10】device: 設備相關代碼
【11】docs: 介紹開源的相關文檔
【12】external: Android使用的一些開源的模組
【13】frameworks: 核心框架 , Java及C++語言,是Android應用程序的框架
【14】hardware: 主要是硬件適配層HAL代碼
【15】libcore: 核心庫相關
【16】libnativehelper: 是Support functions for Android's class libraries的縮寫,表示動態(tài)庫,是實現(xiàn)的JNI庫的基礎
【17】ndk: ndk相關代碼。Android NDK ( Android Native Development Kit )是一系列的開發(fā)工具,允許程序開發(fā)人員在Android應用程序中嵌入C/C++語言編寫的非托管代碼
【18】packages: 應用程序包
【19】pdk: Plug Development Kit的縮寫,是本地開發(fā)套件
【20】prebuilts: x86和arm架構下預編譯的一些資源
【21】sdk: sdk及模擬器
【22】system: 文件系統(tǒng)和應用及組件,是用C語言實現(xiàn)的
【23】tools: 工具文件夾
【24】Makefile: 全局的Makefile ( 通常文件后綴為.mk )

二、應用程序部分

Paste_Image.png
packages/
【1】apps: 應用程序庫
【2】experimental: 非官方的應用程序
【3】inputmethods: 輸入法
【4】providers: 提供器
【5】screensavers: 屏幕保護
【6】services: 電話短信服務
【7】wallpapers: 墻紙

三、應用程序框架部分
存放于frameworks/base中,其中系統(tǒng)服務部分在frameworks/base/services中,在frameworks/av/services里存放著音頻和照相機的服務。

四、系統(tǒng)程序庫部分
【1】系統(tǒng)C庫: bionic
【2】媒體庫: frameworks/av/media
【3】圖層顯示庫: frameworks/native/services/surfaceflinger
【4】網(wǎng)絡引擎庫: external/webp,external/webrtc
【5】3D圖形庫: frameworks/native/opengl
【6】SQLite: Java代碼 frameworks/base/core/java/android/database,C++代碼 external/sqlite

五、系統(tǒng)運行庫部分
Dalvik虛擬機的實現(xiàn): /dalvik,從Android 5.0開始,Android應用程序的默認運行環(huán)境為ART ( Android Runtime ),ART模式擁有更快更高的運行效率。ART: /art

六、硬件抽象層部分
hardware/
libhardware: audio、nfc、power實現(xiàn)
ril: 無線硬件設備與電話的實現(xiàn)

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

相關閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,021評論 25 709
  • I.何謂斷舍離,斷=斷絕不需要的東西,舍=舍棄多余的廢物,離=脫離對物品的執(zhí)念。 當然斷舍離的對象不止是物件,有可...
    鄭璇閱讀 481評論 0 0
  • 你可以通過修改地址間接修改指針指向的值
    Optimization閱讀 225評論 0 0
  • 窗外風雨交加,客廳里老公和兒子,在熬夜看世界杯,我躺在房間里,刷簡書! 心念所動,想起做了兩年多的餐飲,雖然沒有大...
    盛小柒閱讀 873評論 7 13
  • Loader 從右到左鏈式執(zhí)行
    daysun閱讀 229評論 0 0

友情鏈接更多精彩內容