编译Android6.0源码并刷机到Nexus 6P中

准备工作:

  1. Nexus 6P真机
  2. Linux系统(建议使用Ubuntu)
    这里需要注意的是不要用window子系统,因为编译andorid需要区分大小的文件系统,而window是不区分大小写的
  3. 科学上网工具
  4. 至少300G的硬盘空间
  5. docker(找了好久也没找到openjdk7,但是docker环境我看了下是有的)

1. 安装git

apt-get install git 
git config --global user.name "Your Name"   
git config --global user.email "Your [email protected]"

2. 下载Android6.0源码

首先下载 repo 工具。
参考链接:
https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/
https://lug.ustc.edu.cn/wiki/mirrors/help/aosp/

mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
## 如果上述 URL 不可访问,可以用下面的:
## curl -sSL  'https://gerrit-googlesource.proxy.ustclug.org/git-repo/+/master/repo?format=TEXT' |base64 -d > ~/bin/repo
chmod a+x ~/bin/repo

然后建立一个工作目录(名字任意)

mkdir android-6.0.1_r62
cd android-6.0.1_r62

指定Android 版本初始化仓库Android 版本列表:
之前有试过android-6.0.0_r11版本,一直卡在开机页面,换了版本就好了

image.png

repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b android-6.0.1_r62
## 如果提示无法连接到 gerrit.googlesource.com,可以编辑 ~/bin/repo,把 REPO_URL 一行替换成下面的:
## REPO_URL = 'https://gerrit-googlesource.proxy.ustclug.org/git-repo'

新建脚本开始同步(防止出现网络异常可以自动重试)

vim down.sh

输入以下内容保存并退出

#!/bin/bash
PATH=/home/zhd/bin:$PATH # /home/zhd/bin为~/bin对应的绝对路径
echo $PATH


repo sync  -j4
while [ $? = 1 ]; do
        echo “======sync failed, re-sync again======”  
        sleep 3
        repo sync  -j4
done

运行同步脚本,等待一个晚上就好了

sudo ./down.sh

3. 编译Android源码

安装docker
参考:
https://www.runoob.com/docker/ubuntu-docker-install.html
官方教程地址太卡,可以使用上面的链接步骤进行安装

下载openjdk7镜像

由于网上找了很久也没找到openjdk7安装的方法,很多下载链接都已经实效了,所以这里就采用docker的openjdk7镜像进行anroid源码的编译

openjdk镜像链接:
https://registry.hub.docker.com/_/openjdk
选择Oldest进行排序

image.png

找到7u111版本(其他版本没去试过)


image.png

拉取镜像

docker pull openjdk:7u111
image.png

运行镜像

sudo docker run -dit -v /home/zhd/aosp:/tmp/aosp 5dc48a6b75af /bin/bash

将下载好的源码目录挂载到容器tmp/aosp目录中,并以交互模式并后台运行


image.png

安装编译的需要的扩展
安装vim

apt-get update
apt-get install vim

安装https支持

apt-get install -y apt-transport-https
update-ca-certificates -f
apt-get install --reinstall ca-certificates

修改源,提高下载速度
先备份

cp /etc/apt/sources.list /etc/apt/sources.list.bak

选择适合的源
https://mirrors.tuna.tsinghua.edu.cn/help/debian/

查看linux版本

cat /etc/issue
image.png
image.png
image.png

修改源
vim /etc/apt/sources.list

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ jessie main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ jessie main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ jessie-updates main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ jessie-updates main contrib non-free

deb https://mirrors.tuna.tsinghua.edu.cn/debian-security jessie/updates main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian-security jessie/updates main contrib non-free

更新软件版本信息

apt-get update

如果报证书错误
可以用以下命令解决

touch /etc/apt/apt.conf.d/99verify-peer.conf && echo >>/etc/apt/apt.conf.d/99verify-peer.conf "Acquire { https::Verify-Peer false }"

安装扩展(可能有些扩展会安装失败,可忽略,命令一行一行复制执行)

apt-get install rsync
apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386 
apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib 
apt-get install tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386 
apt-get install dpkg-dev libsdl1.2-dev libesd0-dev
apt-get install git-core gnupg flex bison gperf build-essential  
apt-get install zip curl zlib1g-dev gcc-multilib g++-multilib 
apt-get install libc6-dev-i386 
apt-get install lib32ncurses5-dev x11proto-core-dev libx11-dev 
apt-get install lib32z-dev ccache
apt-get install libgl1-mesa-dev libxml2-utils xsltproc unzip m4

设置环境变量

export USER=$(whoami)  

导入编译Android源码所需的环境变量和其它参数:

source build/envsetup.sh

为了提高编译效率,设置编译器高速缓存:

prebuilts/misc/linux-x86/ccache/ccache -M 50G

运行lunch命令选择编译目标:

lunch

aosp_angler-userdebug ,解释一下,angler是nexus 6p的代号(code name),每个设备对应的代号如下:

image.png

userdebug 是编译类型,含义如下:


image.png

这里选择aosp_angler-userdebug选项
开始编译

make -j8

等待完成就行了

4. 刷机

退出docker容器
进入bootloader或同时按住音量-和电源键直到进入bootloader

adb reboot bootloader

新建文件夹
~/nexus6p

cd
mkdir nexus6p
cd nexus6p

下载工厂镜像
https://developers.google.com/android/images#angler

image.png

将下载好的工厂镜像进行解压,进入目录

cd ~/nexus6p/angler-mtc20f-factory-4355fe06/angler-mtc20f
./flash-all.sh

进入源码编译好的目录

cd ~/aosp/android-6.0.1_r62_MTC20F/out/target/product/angler

fastboot flash boot boot.img
fastboot flash recovery recovery.img
fastboot flash system system.img
fastboot flash userdata userdata.img
fastboot flash cache cache.img
fastboot reboot

开机可能会出现


image.png

点ok就行不用管

文章参考:https://blog.csdn.net/chen1234219/article/details/90342071

你可能感兴趣的:(编译Android6.0源码并刷机到Nexus 6P中)