參考:
https://blog.csdn.net/u010963246/article/details/71480684
https://blog.csdn.net/qq_25333681/article/details/79838325
https://blog.csdn.net/h649305597/article/details/80322488
在Mac上下載下傳aosp時,雖然有很多網上的教程可以參考,如清華大學開源軟體鏡像站,但是還是碰到了很多不常見的問題,以此記錄,無法翻牆,使用清華大學鏡像進行下載下傳.
1. 建立大小寫敏感的磁盤鏡像。
可以通過mac自帶的磁盤工具進行建立。也可以通過指令行的方式進行建立,由于指令行相對簡單,在此隻介紹指令行的方式:
hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 100g ~/android.dmg 己由于源碼較大及需要編譯的話需要的空間更大,故将磁盤鏡像設定為100g的大小。建立完後,可以輕按兩下将其挂在到/Volumes/android 下,後續可以在此路徑下檢視鏡像中的檔案。建立此磁盤鏡像是為後續存放源碼,至于為何需要建立,是由于源碼中有些檔案是通過大小寫進行區分的,即其檔案名一樣,隻是大小寫不一樣。如果在不區分大小寫的磁盤上,通過git status等時,會無法區分是修改的哪個檔案中的内容。
2.安裝brew(Homebrew)。
Homebrew簡稱brew,是OSX上的軟體包管理工具,通過終端便可以通過brew安裝、更新、解除安裝軟體。為之後通過brew來安裝軟體做準備。
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
3.安裝gnupg。
通過brew安裝gpg。
brew install gpg
為何需要安裝,原因是在進行repo init的時候:
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest
會提示如下錯誤:
warning: gpg (GnuPG) is not available.
warning: Installing it is strongly encouraged.
原因是沒有安裝gpg,安裝即可。
4.安裝git。
用于後續使用git管理分支用,及通過git拉取repo。
通過下面的指令進行git安裝,配置在github文章中有介紹:
brew install git
5.在家目錄下建立存放repo的目錄,并加入到環境變量中
mkdir ~/bin
PATH=~/bin:$PATH
6.下載下傳repo并複制到bin下,并賦予權限
git clone https://aosp.tuna.tsinghua.edu.cn/android/git-repo.git/
cp git-repo/repo ~/bin/
chmod a+x ~/bin/repo
7.建立源碼目錄
cd /Volumes/Android
mkdir aosp
8.在源碼目錄初始化倉庫
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-8.1.0_r15
9.如果步驟8中提示無法連接配接到gerrit.googlesource.com,則需要修改bin/repo中的REPO_URL進行如下修改。再初始化倉庫。
REPO_URL = 'https://gerrit-google.tuna.tsinghua.edu.cn/git-repo'
10.如果繼續提示[Errno 8] nodename nor servname provided, or not known,則在源碼目錄下建立.repo目錄,将git-repo複制到其下,并重命名為repo。然後再進行步驟8。
11.同步代碼
repo sync
編譯:
編譯流程一緻,主要記錄編譯過程中遇到的問題:
1.找不到對應版本的的macOS.sdk
internal error: Could not find a supported mac sdk: [“10.10” “10.11” “10.12”]
由于/Library/Developer/CommandLineTools/SDKs/ 中隻有MacOSX10.13.sdk 沒有要求的版本,是以需要下載下傳對應的MacOSX10.13.sdk。通過此位址下再對應的sdk,然後解壓到上述路徑中。至于.xz檔案的解壓可通過一下指令
xz -d *.tar.xz
tar -xvf *.tar
解壓如果碰到找不到xz指令,則需要安裝xz即可。
2.bison不能正常使用
8.1上具體報錯為:
[ 0% 310/89583] //external/selinux/ch...eckpolicy yacc policy_parse.y [darwin
FAILED: out/soong/.intermediates/external/selinux/checkpolicy/checkpolicy/darwin_x86_64/gen/yacc/external/selinux/checkpolicy/policy_parse.c out/soong/.intermediates/external/selinux/checkpolicy/checkpolicy/darwin_x86_64/gen/yacc/external/selinux/checkpolicy/policy_parse.h
BISON_PKGDATADIR=external/bison/data prebuilts/misc/darwin-x86/bison/bison -d --defines=out/soong/.intermediates/external/selinux/checkpolicy/checkpolicy/darwin_x86_64/gen/yacc/external/selinux/checkpolicy/policy_parse.h -o out/soong/.intermediates/external/selinux/checkpolicy/checkpolicy/darwin_x86_64/gen/yacc/external/selinux/checkpolicy/policy_parse.c external/selinux/checkpolicy/policy_parse.y
[ 0% 317/89583] //system/core/bootstat:bootstat clang++ bootstat.cpp
ninja: build stopped: subcommand failed.
12:58:42 ninja failed with: exit status 1
解決辦法參考 https://blog.csdn.net/h649305597/article/details/80322488 即可。