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 //刷写镜像