Android7.1.2 源码编译并烧写Nexus5X

1、环境配置

  • Ubuntu18.04
  • openJDK1.8
  • Python2.7

2、更新Ubuntu镜像源

编辑/etc/apt/source.list,替换为以下内容

deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse  deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse  deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse  # deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse # deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse  deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse  

然后执行

sudo apt-get udpate 

3、安装相关依赖

3.1 安装Java

sudo apt-get install openjdk-8-jdk 

3.2 安装Python

sudo apt-get install python2.7 

3.3 安装其它依赖

sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig 

参考:
构建依赖
各个Ubuntu版本需要安装的包

4、配置Git

git config --global user.name Your Name git config --global user.email [email protected] 

5、下载Repo

5.1 配置Repo下载路径

编辑你的~/.bashrc文件,追加如下内容,表示将从该地址下载Repo工具

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

然后重启终端。

5.2 下载Repo

mkdir ~/bin PATH=~/bin:$PATH curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo chmod a+x ~/bin/repo 

参考:
Repo初始化流程
Repo下载地址配置
这些命令执行完成将在当前用户的家目录生成一个bin目录,该目录下面放着一个repo可执行文件。它便是Repo工具,其实就是一个Python脚本。同时将该脚本临时加入了PATH环境变量,如果你想将其永久加入环境变量,可以修改/etc/profile文件。

6、选择源码版本

这一步很关键,需要找到支持你的设备的源码版本,还要考虑该版本是否有对应版本的驱动文件。我的设备是Nexus 5x,想编译Android7.1.2,所以选择这个版本的源码:

N2G47Z这个Build id可以用于后面选择驱动文件。

参考:
源码版本
驱动文件版本

7、下载源码

7.1 下载manifest仓库

repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-7.1.2_r18 

这条指令执行后,首先会在当前目录生成一个.repo目录,然后下载一个叫manifests的git仓库,该仓库会记录当前分支的Android源码都需要下载哪些仓库及其下载地址,分支信息等(Android源码是由多个仓库组成的)。
repo init通过-b指定分支,如果不指定,那就是主分支。

7.2 开始下载源码

执行repo sync便开始下载源码

repo sync 

8、下载驱动文件

根据第六步的源码的Build Id找到驱动二进制文件,下载到源码根目录下面,解压执行,然后阅读证书内容,一路同意,注意最后要输入I ACCEPT

wget https://dl.google.com/dl/android/aosp/lge-bullhead-n2g47z-77c6c4f0.tgz tar -xvf xxx.tgz ./xxx.tgz  wget https://dl.google.com/dl/android/aosp/qcom-bullhead-n2g47z-bad42411.tgz tar -xvf yyy.tgz ./yyy.tgz 

最后会在vendor目录下生成一些文件。

9、编译源码

下载完成后,代码会被自动checkout出来,然后执行如下命令进行编译

source build/envsetup.sh lunch aosp_bullhead-userdebug make -j 16 

我的设备是Nexus5x,所以选择aosp_bullhead-userdebug,具体设备要参考设备代号

10、刷机

编译完成后,会在out/target/product/bullhead/目录生成相应的镜像文件,我们只需要在源码根目录执行下面的命令进行刷机即可

adb reboot bootloader //手机重启进入bootloader模式 fastboot flashall -w  //刷写镜像