macOS Mojave 10.14.4 下 Android 8.1源码编译详解

第0步:版本选择

AOSP版本选择很重要,如果选错了,会造成编译失败等各种问题,编译AOSP对Xcode的版本是有要求的;

比如:AOSP6.0-7.0,要求Xcode的版本是8.3,然而在MacOS 10.14上面是不支持Xcode8.3的这就很尴尬; 由于现在大家的Mac环境基本是更新到最新的10.14了,所以这里推荐大家选择Android-8.1.0_r1。

编译环境:

OS: macOS Mojave 10.14.4

JDK: 1.8.0_144

Xcode: 10.2.1

XcodeSDK: 10.11

AOSP: android-8.1.0_r15

Git: 2.21.0

第一步:创建区分大小写的磁盘映像

由于Mac OS的文件系统默认是不区分大小写的,Git 并不支持此类文件系统,而且此类文件系统会导致某些 Git 命令(例如 git status)的行为出现异常,所以我们需要在区分大小写的文件系统中对 AOSP 源文件进行操作。

通过 shell 使用以下命令创建磁盘映像:

# hdiutil create -type SPARSE -fs'Case-sensitive Journaled HFS+' -size 150g ~/android.dmg

这里设置分配150g的大小,这将创建一个 .dmg(也可能是 .dmg.sparseimage)文件,该文件在装载后可用作具有 Android 开发所需格式的存储卷。

如果您以后需要更大的存储卷,还可以使用以下命令来调整稀疏映像的大小:

# hdiutil resize -size <new-size-you-want>g ~/android.dmg.sparseimage

双击生成的.dmg.sparseimage文件,就会看到挂载的磁盘了,之后所有操作都在这个磁盘分区中进行,您可以像对待外接硬盘一样将其弹出(卸载)。

如果你喜欢在命令行中挂载/卸载分区,可以向 ~/.bash_profile 中添加辅助函数:

# mount the android file image functionmountAndroid { hdiutil attach ~/android.dmg.sparseimage -mountpoint /Volumes/android; } # unmount the android file image functionumountAndroid() { hdiutil detach /Volumes/android; }

注意文件名路径是否一致,要使.bash_profile配置生效,需要:

#source ~/.bash_profile

之后你就可以在命令行中通过mountAndroid和unmountAndroid来操作了。

第二步:安装所需的程序包 安装 Xcode 命令行工具:

一般在安装Xcode的时候会自动安装命令行工具,这里保险起见,检查一下:

# xcode-select--install 通过 macports.org 安装 MacPorts。

将以下内容添加到~/.bash_profile中

export PATH=/opt/local/bin:$PATH

通过 MacPorts 获取 Make、Git 和 GPG 程序包:

# POSIXLY_CORRECT=1 sudo port install gmake libsdl git gnupg

如果您使用 Mac OS X v10.4,还需要安装 bison:

# POSIXLY_CORRECT=1 sudo port install bison 设置文件描述符数量上限

在 Mac OS 中,可同时打开的文件描述符的默认数量上限太低,在高度并行的编译流程中,可能会超出此上限。

要提高此上限,请将下列行添加到 ~/.bash_profile 中:

# set the number of open files to be 1024 ulimit -S -n1024 第三步:下载源代码 安装Repo

Repo 是一款工具,可让您在 Android 环境中更轻松地使用 Git.
直接运行下面的命令:

# curl https://storage.googleapis.com/git-repo-downloads/repo > ~/repo

会在主目录下生成repo文件,接着给他赋予可执行的权限:

# chmod a+x ~/repo

为了可以方面的使用repo命令,我们把它移动到/opt/local/bin里面,因为这个路径我们在上一步中已经加入到PATH了,所以我们可以在任何一个地方执行repo命令;

# mv ~/repo /opt/local/bin 同步源码

进入第一步中创建好的分区,建立工作目录:

# mkdir aosp #cd aosp

repo的运行过程中会尝试访问官方的git源更新自己,如果想使用tuna的镜像源进行更新,可以将如下内容复制到你的~/.bash_profile里:

export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'

设置Git用户名和邮箱:

# gitconfig --global user.name"Your Name" # gitconfig --global user.email"you@example.com"

初始化repo,这里采用清华大学的镜像,并设置分支android-8.1.0_r15:

#repoinit-uhttps://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-8.1.0_r15

最后一步:

# repo sync

源码同步过程中常常会因为网络因素而断开,如果断开了继续执行repo sync命令即可,直到下载完成。

漫长的等待......

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/11932.html