AOSP系列—閱讀源碼並熟悉AOSP目錄結構

再如何不可思議的事情,一旦做的次數多了,便會習慣直至麻木甚至開始樂在其中。 --貓膩 《將夜》

Android做的久了,有些東西自然而然就要了解 一些。對於Android系統源碼來說,我們可能不需要改動它,但讀懂它還是有必要的。

這裏先放上幾個查看源碼的地址

AOSPXRef 這個地址是阿里雲的,感覺起來會比較快,而且已經更新到10.0了

AndroidXRef 這個有時比較慢,目前爲止只更新到9.0

下面的分析基於系統 Q - 10.0.0_r2

整個目錄如下所示:

在這裏插入圖片描述

  • art:Android Runtime,一種App運行模式,區別於傳統的Dalvik虛擬機,旨在提高Android系統的流暢性

  • bionic:基礎C庫源代碼,Android改造的C/C++庫

  • bootable:Android程序啓動導引,適合各種bootloader的通用代碼,包括一個recovery目錄

  • build:存放系統編譯規則及generic等基礎開發包配置

  • cts: Android兼容性測試套件標準

  • dalvik:Android Dalvik虛擬機相關內容

  • developers:Android開發者參考文檔

  • development: Android應用開發基礎設施相關

  • device:Android支持的各種設備及相關配置

  • external:Android中使用的外部開源庫

  • frameworks:應用程序框架,Android系統核心部分,由Java和C++編寫

  • hardware:硬件適配接口

  • kernel:Linux Kernel,不過Android默認不提供,需要單獨下載,只有一個tests目錄

  • libcore:Android Java核心類庫

  • libnativehelper:Android動態庫,實現JNI庫的基礎

  • packages:應用程序包

  • pdk:Plug Development Kit 的縮寫,本地開發套件

  • platform_testing:Android平臺測試程序

  • prebuilts:x86和arm架構下預編譯的一些資源

  • sdk:Android的Java層sdk

  • system:Android底層文件系統庫、應用和組件

  • test:Android Vendor測試框架

  • toolchain:Android工具鏈文件

  • tools:Android工具文件

目錄解析

1. build

存放系統編譯規則及generic等基礎開發包配置,我們如果需要進行系統開發或者只是想改動系統源碼然後編譯一下系統,是需要對這塊瞭解的。目錄如下:

在這裏插入圖片描述

簡單介紹如下:

目錄名 介紹
blueprint 輸入爲.bp文件。輸出爲.ninja文件
core 核心的編譯規則makefile
kati kati is an experimental GNU make clone
make 以前的老的make系統
soong 新的Build系統
target AOSP自帶的Target(模擬器)的一些makefile
tools 編譯中使用的shell及python寫的工具腳本
build/envsetup.sh 編譯初始化腳本

Android.bp:Android7.0開始代替Android.mk文件,它是告訴ndk將jni代碼編譯成動態庫的一個腳本
Makefile:全局Makefile文件,用來定義編譯規則

2. framework

Android核心應用都在這個framework中,我們經常說的framework層的開發就是基於這塊,千萬別覺得高大上,其實和我們平時寫程序差不多,我們常說的分析系統源碼,其實也只是分析到這一層而已。我們先看下這個目錄下有啥:

在這裏插入圖片描述

簡單介紹如下

目錄名 介紹
framework/av/ 多媒體相關的native層源碼目錄
framework/base/ 一些基礎庫代碼,各種解析類、工具類都在這個裏面
framework/compile/ 編譯相關的內容
framework/ex/ ex文件解析器
framework/minikin/ Android原生字體
framework/ml/ 機器學習
framework/multidex/ multi dex Loader
framework/native/ power、surface、input、binder等服務的native層實現源碼目錄
framework/opt/ 一些基礎軟件,如:日曆、網絡、藍牙
framework/rs/ Render Script 可創建3D接口
framework/wilhelm/ OpenSL ES/OpenMAX AL的audio

**

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章