獲取AOSP原始碼

黃燜雞米花發表於2018-04-21

下載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。

開始下載

準備環境

  1. 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
複製程式碼
  1. git
   $ sudo apt-get install git
   $ git config --global user.name "Your Name" 
   $ git config --global user.email "email@example.com"
複製程式碼
  1. 下載初始化包
    https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar
    http://mirrors.ustc.edu.cn/aosp-monthly/
  2. 安裝JDK
   $ sudo apt-get update
   $ sudo apt-get install openjdk-8-jdk
複製程式碼
  1. 處理初始化包 下載的初始化包 aosp-latest.tar
    在user 目錄下新建 project 目錄
   $ mkdir project  
   $ cd project  
複製程式碼

將aosp-latest.tar解壓到project下,得到aosp-lastet資料夾。 (更名為aosp) 壓縮

tar -xvf aosp-latest.tar //解壓 tar包
複製程式碼
  1. 獲得原始碼
    *直接獲得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
解決方案

獲取AOSP原始碼
這個問題出現是由於,解壓的aosp映象包預設分支為master,而解壓後不想拉取master分支程式碼,希望獲得 P 程式碼,則需要以下操作:

    檢視可切換的分支
    ~/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 指令碼
複製程式碼

相關文章