Android源碼下載和編譯

使用Repo進行下載

如果需要學習Android源碼的話,一定得需要了解Repo這個版本管理工具。 
Repo工具的使用 
https://source.android.com/source/using-repo

mkdir WORKING_DIRECTORY
cd WORKING_DIRECTORY

# 下載Repo
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo

/******
// curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o ~/bin/repo
// sudo chmod a+x ~/bin/repo
// export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'
/******

cd WORKING_DIRECTORY
# 初始化Repo
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest
# 進入Repo目錄,查看所有分支
cd .repo/manifests
git branch -a
# 下載某個特定的分支
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-7.1.0_r7
# 也可以這樣切換其他分支
repo init -b android-6.0.1_r63
# 同步Repo代碼 
repo sync

AOSP各版本和分支的關係 
https://source.android.com/source/build-numbers#source-code-tags-and-builds

也可以直接使用wget -c進行斷點續傳進行下載

wget -c -t 0 https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar
tar -vxzf aosp-latest.tar

AOSP代碼目錄含義

目錄名 描述
abi 應用程序二進制接口
bionic C/C++運行時庫,在NDK程序中很大一部分調用就是這裏的程序
bootable 用於Android裝載和啓動程序,其中就包括bootloader和recovery。bootloader是Android中唯一在LInux內核之前執行的程序。通過這段程序可以初始化硬件,建立內存控件的映射圖等,總之,bootloader就是爲LInux內核準備合適的運行環境。
build 用於編譯Android源代碼以及建議system.img,ramdisk.img等文件的工具
cts 用於兼容性測試的工具
dalvik Dalvik虛擬機的源代碼
development 高層的開發和調試工具
device 與設備相關的代碼
docs 包含與Android源代碼項目的文檔和工具,如Dalvik虛擬機格式文檔等
external 擴展工具的源代碼
framworks Android框架層源代碼。也就是Android SDK的源代碼
hardware 硬件層接口和庫
libcore Java核心庫
ndk NDK相關的源代碼
packages 與Android系統一同發佈的應用程序的源代碼
prebuilts Android在各種平臺下編譯之前要使用的工具
sdk 在開發環境中使用的工具,如ddms,draw9path,sdkmanager等
system Android的基本系統

編譯Android源碼

1 進入到AOSP目錄

2 初始化編譯環境 ,每次打開終端都需要

source ./build/envsetup.sh

3 選擇編譯目標,每次打開終端都需要

# 這裏我選擇的是x86體系的源碼,eng(BUILD_TYPE)代表的是工程機
# 如果需要模擬器運行的話,選擇x86運行速度會快一點
# 如果需要燒寫到手機上,那麼選擇aosp_arm-eng
lunch aosp_x86-eng

BUILD_TYPE 對照表:

構建類型 用途
user 有限的訪問權限,主要用於發佈正式產品,沒有root跟調試權限
userdebug 跟user類型差不多,但是多了root跟debug調試權限
eng 擁有各種調試工具的開發版設置,擁有root跟debug權限

4 使用make進行編譯

如果之前有編譯不同CPU體系的,那麼需要使用 make -clobber清除之前的編譯內容, 否則可能會出現錯誤

make -j8 # 使用8個線程進行編譯

5 使用模擬器運行

emulator

編譯後的產物

編譯後會在.//out/target/product/generic_x86/目錄生成一些img文件,這些img文件是可以燒寫到手機中的。

有三個img比較重要,分別是system.img, ramdisk.img, userdata.img。

 

詳細參考:https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/     ( 清華鏡像 )

                https://source.android.google.cn/source/downloading

                https://android.googlesource.com/platform/manifest  (google git)

希望能幫到各位。。。

 

發佈了15 篇原創文章 · 獲贊 9 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章