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 "you@example.com"
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 //刷写镜像
遇到的问题
repo下载时报安全证书校验类似的错误
git config --global http.sslverify false
编译报错(具体忘了什么错了)
编辑~/.bashrc增加环境变量
export LC_ALL=C
Android7.1.2 源码编译并烧写Nexus5X的更多相关文章
- Android 源码编译之旅
目录 前言 背景 安装软件 正文 Mac 分区 移动硬盘分区 Repo 下载源码 编译 源码导入 Android Studio 查看 碰到的问题 Could not find a supported ...
- xposed源码编译与集成
xposed installer3.0版本之后,传统的xposed框架的使用方法是从官网上下载xposed installer.apk以及xposed-arm-sdk22.zip包.然后具体的使用方法 ...
- Android 5.0源码编译问题
如果是自己通过repo和git直接从google官网上download的源码,请忽略这个问题,但是由于google在国内被限制登录,通过这一种方法不是每个人都能download下来源码,通常的做法就是 ...
- Android stdio Apktool源码编译
Android Apktool源码编译 标签(空格分隔): Android Apktool 源码编译 需求 习惯NetBeans调试smali需要用Apktool反编译apk,需要用-d的参数才能生成 ...
- SSH/SSL 源码编译安装简易操作说明
环境:CentOS 6.7 安全加固需求,由于某盟扫描系统主机有SSL系列漏洞,客户要求必须修复: 解决方案:将SSH/SSL升级到最新版本,删除SSL旧版本(实测不删除旧版本某盟扫描无法通过). 当 ...
- Hadoop源码编译过程
一. 为什么要编译Hadoop源码 Hadoop是使用Java语言开发的,但是有一些需求和操作并不适合使用java,所以就引入了本地库(Native Libraries)的概念,通 ...
- World Wind .NET源码编译问题处理
World Wind .NET源码编译问题处理 下载了World_Wind_1.4.0_Source源码(http://worldwindcentral.com/wiki/NASA_World_W ...
- 源码编译安装 MySQL 5.5.x 实践
1.安装cmakeMySQL从5.5版本开始,通过./configure进行编译配置方式已经被取消,取而代之的是cmake工具.因此,我们首先要在系统中源码编译安装cmake工具. # wget ht ...
- Linux 安装node.js ---- 源码编译的方式
一 : 普通用户: 安装前准备环境: 1.检查Linux 版本 命令: cat /etc/redhat-release 2.检查 gcc.gcc-c++ 是否安装过 命令: rpm -q gcc rp ...
随机推荐
- 在一个元素上:hover,改变另一个元素的css属性
如果二者是父子关系,可以写成这种: .face:hover .eye-bottom { margin-top: 30px; } 如果是兄弟关系: .face:hover+.ear-wrap { tra ...
- linux系统引导过程
linux系统引导过程 linux-0.11引导时,将依次运行BIOS程序.bootsect.s.setup.s和head.s,完成引导过程后进入到main函数运行.BIOS完成硬件的检查与初始化等工 ...
- idea 启动微服务 设置 run dashboard
微服务如果很多,启动时如果在run窗口,会不是很方便,所以idea中配置了rundashboard,有时不自动出现时,需要进行配置: 配置操作如下: 我的idea版本2020.2 1.在父工程的.id ...
- Hive启动后show tables报错:Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
错误详情: FAILED: HiveException java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive ...
- java重载时自动转换咋回事?举例说明
当一个重载的方法被调用时,Java在调用方法的参数和方法的自变量之间寻找匹配. 但是,这种匹配并不总是精确的.只有在找不到精确匹配时,Java的自动转换才会起作用. (如果定义了test(int ...
- Redis 未授权访问漏洞【原理扫描】修复方法
漏洞类型 主机漏洞 漏洞名称/检查项 Redis 配置不当可直接导致服务器被控制[原理扫描] 漏洞名称/检查项 Redis 未授权访问漏洞[原理扫描] 加固建议 防止这个漏洞需要修复以下三处问题 第一 ...
- Mysql学习day2随笔
--jion on 连接查询 --jion where 等值查询 建议先用jion on再用where过滤 --inner jion 返回交集 --left join 无论右表是否匹配,都会从左表返回 ...
- OpenHarmony 3.1 Beta版本关键特性解析——HAP包安装实现剖析
(以下内容来自开发者分享,不代表 OpenHarmony 项目群工作委员会观点) 石磊 随着社会的不断发展,人们逐渐注重更加高效.舒适.便捷.有趣的生活和工作体验. OpenAtom OpenHa ...
- Promql基础语法2
数据样本 直方图类型 delta函数 运算操作 数学运算 node_disk_info / 100 当瞬时向量与标量之间进行数学运算时,数学运算符会依次作用域瞬时向量中的每一个样本值,从而得到一组新的 ...
- XCTF练习题---MISC---a_good_idea
XCTF练习题---MISC---a_good_idea flag:NCTF{m1sc_1s_very_funny!!!} 解题步骤: 1.观察题目,下载附件 2.到手以后发现是一张图片,尝试修改文件 ...