MacBook下載和編譯Android AOSP源碼


一、安裝

0.國內鏡像

首先,推薦兩個地方,也就是國內鏡像來下載源碼,強烈建議你看完,因為都一樣的
科大源清華源
注意事項:如果你不編譯源代碼,裝源代碼的磁盤格式,是任何格式都可以,但是你如果要在MacBook上編譯源代碼,那必須把磁盤格式變成Mac的日志格式,區分大小寫的,也就是這個格式:
圖片.png

1.安裝repo和Git

Git的話,就自行搜素怎么安裝了,這里介紹怎樣安裝repo。

mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo

運行 repo help可能會報錯,或者有提示沒有獲得完整版
問題1.提示沒有獲得完整版
圖片.png
問題2.提示沒有這個命令
圖片.png
解決第一個問題:
所以,要下載兩個文件
第一個就是clone.bundle   https://gerrit.googlesource.com/git-repo/clone.bundle
第二個就是git-repo        https://gerrit.googlesource.com/git-repo
將clone.bundle復制到git-repo文件夾中
然后把git-repo這個文件夾中的所有文件都復制到上面創建的~/bin/目錄下
然后執行下面的代碼(其實這個已經解決了第二個問題,每次更換操作目錄的時候,要得到repo的命令,都要執行這兩個方法)

echo 'export PATH=$PATH:$HOME/bin' >> ~/.bashrc  
export PATH=$PATH:$HOME/bin 

再執行:repo init
得到這個界面
圖片.png

然后查看repo的版本,執行:repo version
圖片.png
到這里,repo就已經完整地安裝完畢啦。

2.下載源碼

然后就是開始下載源代碼了
然后創建一個存放源代碼的目錄

mkdir AndroidSource
cd AndroidSource

然后呢老規矩,還是要每次用repo之前都要執行(這個暫時還沒辦法解決)

echo 'export PATH=$PATH:$HOME/bin' >> ~/.bashrc  
export PATH=$PATH:$HOME/bin 

然后執行

repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest

用來初始化代碼目錄。
得到這個界面
圖片.png
成功了就是這樣。到這里,已經得到AOSP源碼的主分支,然后你想下載其他分支,就是其它版本的代碼,你可以切換到其它版本。

cd .repo/manifests
git branch -a | cut -d / -f 3 

這樣就可以得到所有的版本,我這里選擇了,android-10.0.0_r33這個版本,回到AOSP目錄下,執行代碼
repo init -b android-10.0.0_r33這樣就切換到這個分支了,下載的也是Android10.0的代碼,你也可以不切換,默認下載主分支,最新的代碼,但我不建議這樣做,因為后續可能會發生一些不可知的錯誤。
當然,在上一步初始化代碼的時候,你已經知道你要下載哪個分支了,就可以直接以下代碼:

repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-10.0.0_r33

圖片.png
然后開始同步代碼:

repo sync

然后就開始同步代碼,看到網速了吧,已經在開始同步了,看網速,我這里下載了五六個小時,網速還是不給力的。

圖片.png

二、編譯

1.機器

MacBook Pro

圖片.png

2.JDK環境

查看JDK的安裝位置
/usr/libexec/java_home
圖片.png

在~/.bash_profile文件中配置JDK環境,
vim ~/.bash_profile   打開,加入你的JDK地址,配置JDK

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_251.jdk/Contents/Home
export JAVA_HOME=$JAVA_HOME

圖片.png
source ~/.bash_profile   使得文件生效
echo $JAVA_HOME  輸出JDK配置,看看是否生效
整個過程
圖片.png

3.GCC環境

下載一個在終端下載一個gcc,就是命令:brew install gcc
或者下載軟件Xcode就可以了。如果你沒有brew命令,那就靠你自己解決搜索安裝brew咯,這也是一個坑。

4.可提前解決的報錯

報錯1

圖片.png
這個是因為我的分區不是Mac OS拓展(區分大小寫)的分區,所以就報錯了,因為的只有一塊移動硬盤,又是exFat格式的,壓縮卷不行,然后我格式化了移動硬盤,重新下載了一份代碼,夠刺激吧。

報錯2

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

這個問題一直困擾着我,但是不知道怎么稀里糊塗地解決了,你可以嘗試着執行以下代碼:
就是增加java的堆內存,使得不會內存溢出

export JACK_SERVER_VM_ARGUMENTS=”-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4096m”

報錯3

圖片.png
這里官方都有提示可以這樣修改:
圖片.png
就是修改目錄下這個文件system/sepolicy/tests/Android.bp,去掉stl: "libc++_static"

報錯4:
圖片.png
這是因為沒有對應版本的SDK,查看Mac版本,我這里是沒有10.15
在這個文件里build/soong/cc/config/x86_darwin_host.go ,添加你對應的版本
圖片.png

報錯4

Permission denied
權限問題,把整個源碼都獲得權限就可以了chmod -R 777 AOSP

報錯5

也不管啥報錯了,要先安裝port,然后再安裝以下的內容:

sudo port install gmake git gnupg
sudo port install bison

5.編譯

一切操作都在你的根目錄下面執行
切換到Android源碼的目錄下,執行這個文件envsetup.sh
source /Volumes/lanjiabin/AndroidSource/build/envsetup.sh
或者切換到build目錄下,直接source envsetup.sh

執行lunch
會讓選擇啟動器,我選了24 ,輸入24,回車,就是這個效果
也可以直接:lunch 24
圖片.png

然后開始編譯代碼make -j4
其中-j后面的表示開始4個線程進行進行編譯.
根據你的CPU數量來算,我就兩個,乘以2就可以了,所以我的是4
經過漫長的等待,和多次錯誤,我終於編譯成功了,我這破電腦用了11個小時,太恐怖了,我看別人就一個小時就完事,我這差點崩潰
圖片.png

然后再執行

.envsetup.sh
lunch 24
emulator

再等一會,就可以看到自己的虛擬機在啟動了
圖片.png

好的,先告一段落。

編程中我們會遇到多少挫折?表放棄,沙漠盡頭必是綠洲。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM