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

 

 

你可能感兴趣的:(android源码学习)