(编译到47%失败)to be deleted

Mac 下 Android 源码编译从零开始:Day One--环境搭建,下载源码html

开发环境: Mac

参考官网连接(源码下载):source.android.com/source/init…android

总连接(AOSP setup):source.android.google.cn/setup/git

备注

本教程做为记录所用,因为半途而废过好几回,本次会认真记录下每个步骤和遇到的坑,当作给本身一个交代。shell

整体目的

一、一周内,搭建好环境,并编译成功:from 2019.5.7 到 2019.5.14。 2019.5.7 - 2019.5.8 完成搭建、下载源码 二、掌握对源码进行断点调试。api

三、根据参考书《Android 开发艺术》和《Android 进阶解密》,对 framework 层进行扫盲。四大组件为重点,其余只作涉猎。xcode

分治目标

执行期限:2019.5.7-2019.6.7 一个月时间bash

本目标目测过于乐观,先试行1周,看进度和时间投入如何,再定详细目标。服务器

To do : 此处列出很多于五个阶段和执行期限。网络

·curl


·

设置 Mac OS 编译环境

·

Step 1 : 建立区分大小写的磁盘映像

编译要求:须要区分大小写的文件系统中对 AOSP 源文件进行操做。避免 Git 命令出现异常。

经过 shell 使用如下命令建立磁盘映像:

hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 110g ~/android.dmg
复制代码

坑点:8.0源码下载下来就60G,编译以后会更大,网上查不到确切的容量下限,此处设置为110G,以知足编译容量需求。不然可能遇到编译失败,若是把分区卸载了从新加载再编译,会重头开始编译,意味着你可能又须要60G 以上的空间,因此编译存储空间预留大一点。

这将建立一个 .dmg文件,该文件在装载后可用做具备 Android 开发所需格式的存储卷。

若是您之后须要更大的存储卷,还可使用如下命令来调整稀疏映像的大小:

hdiutil resize -size <new-size-you-want>g ~/android.dmg.sparseimage
复制代码

对于存储在主目录下的名为 android.dmg 的磁盘映像,您能够向 ~/.bash_profile 中添加辅助函数:

要在执行 mountAndroid 时装载磁盘映像,请运行如下命令:

# mount the android file image
function mountAndroid { hdiutil attach ~/android.dmg -mountpoint /Volumes/android; }
复制代码

注意:若是系统建立的是 .dmg.sparseimage 文件,请将 ~/android.dmg 替换成 ~/android.dmg.sparseimage。

要在执行 umountAndroid 时卸载磁盘映像,请运行如下命令:

# unmount the android file image
function umountAndroid() { hdiutil detach /Volumes/android; }
复制代码

装载 android 存储卷后,您将在其中开展全部工做。您能够像对待外接式存储盘同样将其弹出(卸载)。

Step 2 : 安装 JDK

要查看在开发各类 Android 版本时要使用的 Java 版本,请参阅相关要求。

安装所需的程序包 使用如下命令安装 Xcode 命令行工具:

xcode-select --install

经过 macports.org 安装 MacPorts。

注意:请确保在路径中 /opt/local/bin 显示在 /usr/bin 以前。不然,请将如下内容添加到 ~/.bash_profile 文件中:

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

注意:若是主目录中没有 .bash_profile 文件,请建立一个。

经过 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 -n 1024
复制代码

·


Step 3 : 下载源代码

安装 Repo

Repo 是一款工具,可以让您在 Android 环境中更轻松地使用 Git。要详细了解 Repo,请参阅开发部分。

要安装 Repo,请执行如下操做:

一、确保主目录下有一个 bin/ 目录,而且该目录包含在路径中:

mkdir ~/bin
PATH=~/bin:$PATH
复制代码

二、下载 Repo 工具,并确保它可执行:

curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
复制代码

初始化 Repo 客户端

安装 Repo 后,设置您的客户端以访问 Android 源代码代码库:

一、建立一个空目录来存放您的工做文件。若是您使用的是 MacOS,必须在区分大小写的文件系统中建立该目录。为其指定一个您喜欢的任意名称:

mkdir WORKING_DIRECTORY
cd WORKING_DIRECTORY
复制代码

注意:进入挂载的映像目录,须要 cd .. 两次退到系统根目录,ls 能够看到有 Volumes,以下图所示:

此目录下会包含咱们默认的系统盘和本身挂载上去的映像,此处咱们命名为 android, cd android/WORKING_DIRECTORY

坑点:此处衔接上面建立的android.dmg.sparseimage磁盘映像,你须要 mount 这个磁盘映像,进入并在这里面建立WORKING_DIRECTORY,这个磁盘映像就是区分大小写的目录,case-sensitive directory.

若是只是把 WORKING_DIRECTORY 随便建立在主目录下,因为当前Mac 默认是不区分大小写的,因此后面进行编译时,会在 make clobber 这一步 报错,以下所示:

Case Insensitive Filesystem
If you are building on an HFS filesystem on Mac OS, you may encounter an error such as

************************************************************
You are building on a case-insensitive filesystem.
Please move your source tree to a case-sensitive filesystem.
************************************************************
复制代码

二、使用您的真实姓名和电子邮件地址配置 Git。要使用 Gerrit 代码审核工具,您须要一个与已注册的 Google 账号关联的电子邮件地址。确保这是您能够接收邮件的有效地址。您在此处提供的姓名将显示在您提交的代码的提供方信息中。

git config --global user.name "Your Name"
git config --global user.email "you@example.com"
复制代码

坑点:此处邮箱最好填写为 gmail,而且该邮箱就是 GitHub 的注册邮箱,对应GitHub名。

三、运行 repo init 以获取最新版本的 Repo 及其最近的全部错误更正内容。

坑点:如下两条命令都是在初始化repo,二选一,建议选第二条命令,能够配置本身想要的分支。

您必须为清单指定一个网址,该网址用于指定 Android 源代码中包含的各个代码库将位于工做目录中的什么位置。

repo init -u https://android.googlesource.com/platform/manifest
复制代码

不带参数的 manifest命令用于获取master上最新的代码,可是能够经过-b参数指定获取某个特定的android版本,好比咱们想要获取android-8.0.0_r17分支,那么命令以下:

repo init -u https://android.googlesource.com/platform/manifest -b android-8.0.0_r17
复制代码

要查看分支列表,请参阅 源代码标记和版本

初始化成功后,系统将显示一条消息,告诉您 Repo 已在工做目录中完成初始化。刚才建立的客户端 bin 目录中如今应包含一个 .repo 文件,大小 29k,清单等文件将保存在该目录下。

Step 4 : 下载 Android 源代码树

要将 Android 源代码树从默认清单中指定的代码库下载到工做目录,请运行如下命令:

repo sync
复制代码

Android 源代码文件将位于工做目录中对应的项目名称下。初始同步操做将须要 1 个小时或更长时间才能完成。要详细了解 repo sync 和其余 Repo 命令,请参阅开发部分。

坑点:设置终端代理

参考连接:www.jianshu.com/p/ef35a1eef…

坑点中的坑点:因为此处连端口号都修改了,会致使后面编译时,jack-server(Android 源码自带编译工具) 没法启动,由于 jack-server 默认配置的端口是 8077,而蓝灯代理的端口不是这个,须要修改 .jack-setting 文件中的端口号配置,如图:

注意,jack-server 目录是隐藏文件,是在编译以后才生成的,此处也是回过头来补充的坑点中的坑点,须要将隐藏文件显示出来才能看到。

修改如图:

此处因为国内网络访问不了谷歌,解决方案是设置代理,我用的是蓝色的灯笼这个,在网页上找到设置 ->高级设置 ->HTTP(S)代理服务器 具体方法

找到 HTTP(S)代理服务器:127.x.x.x:xxxxx,在终端输入一下命令, 你的代理IP和端口号一并复制黏贴上去, 就能够进行 repo sync 了,不然只能是failed。

export {http,https}_proxy='http://127.x.x.x:xxxxx'
复制代码

让终端走代理的方法有不少种,这个办法的好处是简单直接,而且影响面很小(只对当前终端有效)。

正常下载源码如图所示,放它下载一夜,屏幕设置为不关闭,省得进入休眠状态致使断网。

如何知道下载好的 AOSP 是什么版本?

找到 build/make/core/version_defaults.mk文件打开,搜索PLATFORM_SDK_VERSION,找到了 PLATFORM_SDK_VERSION := 26,即本次下载的Android O 源码本人啦。

下载完毕的提示以下图所示:

Syncing work tree: 100% (568/568), done.

相关文章
相关标签/搜索