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 ...
随机推荐
- 技术架构:IT生存之道
Technical architecture: What IT does for a living (cio.com) Technical architecture: What IT does for ...
- canvas离屏、旋转效果实践——旋转的雪花
效果展示理论基础--"常见的canvas优化--模糊问题.旋转效果" 用离屏canvas画基础部分 1.封装画线函数 function drawLine(ctx,x1,y1,x2, ...
- React 可视化开发工具 Shadow Widget 非正经入门(之六:markdown)
本系列博文从 Shadow Widget 作者的视角,解释该框架的设计要点.本篇讲解 Markdown 在 Shadow Widget 中的应用. Markdown 在 Shadow Widget 中 ...
- java中throws子句是怎么用的?工作原理是什么
7.throws子句 马克-to-win:当你的方法里抛出了checked异常,如你不catch,代表你当时不处理(不想处理或没条件处理),但你必须得通过"throws那个异常"告 ...
- js读取cookie 根据cookie名称获取值的方法
//方法1 //存在问题:如果cookie中存在 aaaname=aa;name=bb 获取name的值就会出现错误function getCookie(c_name){ if (document.c ...
- npm权限不够(安装什么都报错)
问题 Windows下使用npm安装任何包都报错, Windows下使用npm显示权限不够 如图: 解决方法 1. 方法一 使用管理员权限打开 命令窗口, 治标不治本!!!!不推荐 ...
- hql常用查询语句
// HQL: Hibernate Query Language.// 特点:// >> 1,与SQL相似,SQL中的语法基本上都可以直接使用.// >> 2,SQL查询的是表 ...
- Linux上安装RePlace
RePlAce: Advancing Solution Quality and Routability Validation in Global Placement 项目地址 https://gith ...
- FastAPI(七十二)实战开发《在线课程学习系统》接口开发-- 留言列表开发
之前我们分享了FastAPI(七十一)实战开发<在线课程学习系统>接口开发-- 查看留言,这次我们分享留言列表开发. 列表获取,也需要登录,根据登录用户来获取对应的留言.逻辑梳理如下. 1 ...
- 省掉80%配置时间,这款Mock神器免费又好用
前端的痛苦 作为前端,最痛苦的是什么时候? 每个迭代,需求文档跟设计稿都出来了,静态页面唰唰两天就做完了.可是做前端又不是简单地把后端吐出来的数据放到页面上就完了,还有各种前端处理逻辑啊. 后端接口还 ...