下載AOSP原始碼
學習Android原始碼首先要下載一套AOSP原始碼,國內無法直接訪問到AOSP網站。
AOSP源:https://source.android.com/source/downloading
可以用國內清華源或中科大源代替
清華映象:https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/
中科大映象:https://lug.ustc.edu.cn/wiki/mirrors/help/aosp
開發環境要求
硬體要求
您的開發工作站應該達到或超過這些硬體要求:
Android 2.3.x(薑餅)和更高版本(包括主分支)需要64位環境。您可以在32位系統上編譯舊版本。 至少100GB的可用磁碟空間用於檢出程式碼,另外還有額外的150GB可用於構建它。如果您執行多個構建或使用ccache,則需要更多空間。 如果您在虛擬機器中執行Linux,則至少需要16GB的RAM /交換空間。
軟體要求
在Android開源專案(AOSP) master的分支傳統開發和Ubuntu的長期支援測試(LTS)版本,但也可以使用其他釋出版本。
初次建議使用ubuntu釋出版本,之後可以嘗試其他例如Deepin。
開始下載
準備環境
- repo
在ubuntu user 根目錄執行
mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage-googleapis.proxy.ustclug.org/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
複製程式碼
- git
$ sudo apt-get install git
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
複製程式碼
- 下載初始化包
https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar
http://mirrors.ustc.edu.cn/aosp-monthly/ - 安裝JDK
$ sudo apt-get update
$ sudo apt-get install openjdk-8-jdk
複製程式碼
- 處理初始化包
下載的初始化包 aosp-latest.tar
在user 目錄下新建 project 目錄
$ mkdir project
$ cd project
複製程式碼
將aosp-latest.tar解壓到project下,得到aosp-lastet資料夾。 (更名為aosp) 壓縮
tar -xvf aosp-latest.tar //解壓 tar包
複製程式碼
- 獲得原始碼
*直接獲得aosp原始碼
~/project/aosp$ repo sync
複製程式碼
*獲取特定分支
在解壓後的aosp目錄下,需要修改repo分支(預設是master)
remotes/origin/android-8.1.0_r13
remotes/origin/android-p-preview-4
檢視可切換的分支
~/project/aosp$ cd .repo/manifests
~/project/aosp/.repo/manifests$ git branch -av //檢視可用分支
~/project/aosp$ git reset --hard remotes/origin/android-p-preview-4
//~/project/aosp$ git reset --hard remotes/origin/android-8.1.0_r13
~/project/aosp$ repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b android-p-preview-4
//~/project/aosp$ repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b android-8.1.0_r13
~/project/aosp$ repo ysnc
複製程式碼
android-8.0.0_r13 對應版本:Oreo 對應裝置:Pixel XL、Pixel、Pixel C
特定分支 https://source.android.com/source/build-numbers#source-code-tags-and-builds
由於網路原因repo sync容易斷開,建議使用以下指令碼:
#!/bin/sh
echo "---------start-----------"
repo sync
while [ $? == 1 ] ;do
echo "---------gg--------------"
sleep 3
repo sync
done
複製程式碼
複製以上儲存為 dl.sh 在程式碼目錄執行:
~/project/aosp$ ./dl.sh
複製程式碼
等待結束就可以獲得aosp原始碼
如果不需要全部程式碼,僅需要部分參考翻閱。
可以在repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b android-8.1.0_r13 之後
修改 android-O.repo\manifests\default.xml
將不需要的<project ... >註釋掉,再repo sync 即可
可能遇到的問題
/usr/bin/env: ‘python’: No such file or directory
解決方案
檢視可切換的分支
~/project/aosp$ cd .repo/manifests
~/project/aosp/.repo/manifests$ git branch -av //檢視可用分支
~/project/aosp$ git reset --hard remotes/origin/android-p-preview-4
~/project/aosp$ repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b android-p-preview-4
~/project/aosp$ repo ysnc //建議使用上面的 dl.sh 指令碼
複製程式碼