天天看點

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