MacBook下載和編譯Android AOSP源碼

一、安裝

0.國內鏡像

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

MacBook下載和編譯Android AOSP源碼

1.安裝repo和Git

Git的話,就自行搜索怎麼安裝了,這裡介紹怎樣安裝repo。

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

運行 repo help可能會報錯,或者有提示沒有獲得完整版 問題1.提示沒有獲得完整版

MacBook下載和編譯Android AOSP源碼

問題2.提示沒有這個命令

MacBook下載和編譯Android AOSP源碼

解決第一個問題: 所以,要下載兩個文件 第一個就是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的命令,都要執行這兩個方法)

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

再執行:repo init 得到這個界面

MacBook下載和編譯Android AOSP源碼

然後查看repo的版本,執行:repo version

MacBook下載和編譯Android AOSP源碼

到這裡,repo就已經完整地安裝完畢了。

2.下載源碼

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

<code>mkdir AndroidSource
cd AndroidSource/<code>

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

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

然後執行

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

用來初始化代碼目錄。 得到這個界面

MacBook下載和編譯Android AOSP源碼

成功了就是這樣。到這裡,已經得到AOSP源碼的主分支,然後你想下載其他分支,就是其它版本的代碼,你可以切換到其它版本。

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

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

<code>repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-10.0.0_r33/<code>
MacBook下載和編譯Android AOSP源碼

然後開始同步代碼:

<code>repo sync/<code>

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

MacBook下載和編譯Android AOSP源碼

二、編譯

1.機器

MacBook Pro

MacBook下載和編譯Android AOSP源碼

2.JDK環境

查看JDK的安裝位置 /usr/libexec/java_home

MacBook下載和編譯Android AOSP源碼

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

<code>export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_251.jdk/Contents/Home
export JAVA_HOME=$JAVA_HOME/<code>
MacBook下載和編譯Android AOSP源碼

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

MacBook下載和編譯Android AOSP源碼

3.GCC環境

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

4.可提前解決的報錯

報錯1

MacBook下載和編譯Android AOSP源碼

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

報錯2

<code>Exception in thread "main" java.lang.OutOfMemoryError: Java heap space/<code>

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

<code>export JACK_SERVER_VM_ARGUMENTS=”-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4096m”/<code>

報錯3

MacBook下載和編譯Android AOSP源碼

這裡官方都有提示可以這樣修改:

MacBook下載和編譯Android AOSP源碼

就是修改目錄下這個文件
system/sepolicy/tests/Android.bp,去掉stl: "libc++_static"

報錯4:

MacBook下載和編譯Android AOSP源碼

這是因為沒有對應版本的SDK,查看Mac版本,我這裡是沒有10.15 在這個文件裡
build/soong/cc/config/x86_darwin_host.go ,添加你對應的版本

MacBook下載和編譯Android AOSP源碼

報錯4

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

報錯5

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

<code>sudo port install gmake git gnupg
sudo port install bison/<code>

5.編譯

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

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

MacBook下載和編譯Android AOSP源碼

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

MacBook下載和編譯Android AOSP源碼

然後再執行

<code>.envsetup.sh
lunch 24
emulator/<code>

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

MacBook下載和編譯Android AOSP源碼

好的,先告一段落。

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


分享到:


相關文章: