由于CM团队不在提供服务而转战lineageOS,我们仍可以通过构建一个lineageOS来对Android源码进行学习。下面就对如何构建一个lineageOS的具体步骤进行一个描述,并且把我所遇到的问题进行展示,希望能够帮到同样需要学习的人。
先决条件
-
首先你需要一台Nexus6手机并且刷入了最新的lineageOS,我刷入的系统为14.1版本,具体如何刷入lineageOS,可参考https://wiki.lineageos.org/devices/shamu/,上面也有介绍如何build环境,这是本文的重要参考来源。
-
需要有一台装有Linux系统的电脑,我使用的是ubuntu16.04,个人感觉可能14.04的稳定性更好一些,因为网上有很多人和我一样使用16.04的系统在编译环节出现一些问题。这些会在后面提到。电脑最好为8G的内存,硬盘至少要有150G的大小。
-
需要一个稳定的代理,有问题上谷歌是必须的,而且我们需要从外网下载源码。
下面我们开始:
1 安装SDK并配置好SDK的路径。因为我们要使用到adb等工具。
2 我们还需要使用aptinstall <安装包>命令来安装一些包。我们可以再终端输入以下命令:
sudo apt install bcbison build-essential curl flex g++-multilib gcc-multilib git gnupggperf imagemagick lib32ncurses5-dev lib32readline-gplv2-devlib32z1-dev libesd0-dev liblz4-tool libncurses5-dev libsdl1.2-devlibssl-dev libwxgtk2.8-dev libxml2 libxml2-utils lzop pngcrush rsyncschedtool squashfs-tools xsltproc zip zlib1g-dev
如果你使用的是ubtuntu15.10你需要将命令中的lib32readline-gplv2-dev替换成lib32readline6-dev,如果你使用的是ubtuntu16.04,你还需要将命令中的libwxgtk2.8-dev替换成libwxgtk3.0-dev
如果你刷入的也是LineageOS14.1,则需要在你的linux系统中安装OpenJDK1.8的。
3 我们需要创建一些目录
$ mkdir -p ~/bin
$ mkdir -p ~/android/lineage
4
我们需要安装
repo
来下载源码到本地电脑,这里我遇到了
第一个问题
,官方文档中说只要我们执行以下命令。
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
再将下面文本配置到配置文件~/.profile
中
,我们就可以使用
repo
了。
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
要确保在配置文件中加入文本后执行命令
source~/.profile
,这是为了更新运行环境。
随后我们执行命令
:
$cd ~/android/lineage
$ repo init -u https://github.com/LineageOS/android.git -b cm-14.1
会出现以下错误
:
fatal: Cannot get https://gerrit.googlesource.com/git-repo/clone.bundle fatal: error [Errno 101] Network is unreachable 具体解决方案:http://blog.csdn.net/xiaokeweng/article/details/46743409 该博客大神提供了两种解决方案,问题产生的原因也在博客里进行了说明,我使用的是第二种解决方案,下载了一个新的repo而不使用谷歌官方文档中提供的repo, 具体下载链接为http://download.csdn.net/detail/xiaokeweng/8872981,也是由上述博客大神提供的。 将repo下载好之后,在使用repo