--- title: 'Android 源碼、內核 - 目錄、編譯結果' disqus: kyleAlien --- Android 源碼、內核 - 目錄、編譯結果 === ## Overview of Content [TOC] ## Android 源碼 ### 源碼目錄 * Android 在編譯前的 [**目錄**](https://cs.android.com/android/platform/superproject/main),大致功能分類如下 | 目錄名 | 概述 | | - | - | | `abi` | 應用程式的二進制界面(`Application Binarty Interface`) | | `bionic` | C/C++ Runtime library;在 NDK 程序中很大一部份就是調用這個資料夾提供的庫 | | `boottable` | Android 裝載、啟動(Bootloader、recovery);這些系統會在 Linux 內核之前運行 | | `build` | 編譯 Android source 的結果文件,其中包括建立 `system,img`、`ramdisk.img` 文件 | | `cts` | 兼容性測試工具 | | `dalvik` | Dalivik 虛擬機 source | | `development` | 開發、調適工具 | | `device` | 設備相關程式 | | `docs` | Android source 項目的文檔、工具 | | `external` | 拓展的工具 source | | `framework` | Android 框架層源碼(就是 Android SDK) | | `hardware` | 硬體層界面、庫(`HAL` 層源碼就在這個位置) | | `libcore` | Java 核心庫 | | `ndk` | `NDK` source | | `packages` | Android 系統榜定的內置應用 | | `sdk` | 在開發環境中會用到的工具 `ddms`、`sdkmanager`... | | `system` | Android 的基本系統 | >  ### 編譯結果 out 目錄 * `out/` 目錄中有兩個子目錄,編譯 Android 時會產生兩個平台運行的工具、庫 1. **`host/` 目錄** 主要是編譯過程中需要的一些工具、庫,主要是 **在「編譯平台」上運行** * `out/host/linux-x86/bin` 目錄中視 Linux 平台下運行的工具,包括常見的 `aapt`、`adb`、`aidl`... 等等工具 >  * `out/host/common/obj/JAVA_LIBRARIES` 目錄中提供編譯期間需要的 Java Library >  2. **`target/` 目錄** 目錄中的目標文件(`.jar`、`.so`、`.img`... 等等),主要是 **在「Android 平台」上運行**,其中有兩個目錄 * **`common` 目錄** 包含在 Android 系統上運行程序需要的 **Java Library**(`out/target/common/obj/APPS`、`out/traget/common/obj/JAVA_LIBRARIES`) >  Android 系統資源檔案 `R` 資料夾 >  Android 系統官方文檔 >  * **`product` 目錄**:主要有三個重要檔案 | 檔案名 | 概述 | 對應目錄 | | - | - | - | | `system.img` | 包含 Android 系統的大部分原生應用程式和系統檔案。這是一個包含 Android 系統映像的文件,用於啟動和運行 Android 作業系統 | `out/target/product/generic/system` | | `ramdisk.img` | 包含用於初始化 Android 系統的根檔案系統,通常用於啟動過程。這個檔案包含啟動時所需的根檔案系統 | `out/target/generic/root` | | `userdata.img` | 包含用戶數據,例如應用程式數據和用戶設定。這是一個用於存儲用戶相關數據的映像文件 | `out/target/generic/data` | >  ## Appendix & FAQf :::info ::: ###### tags: `Android 系統`
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up