1. 程式人生 > >Mac上下載及編譯android原始碼

Mac上下載及編譯android原始碼

參考:

     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+'-size100g ~/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
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 即可。