Ubuntu16.04编译Android8.0系统源码,并刷机 (Pixel XL)
机子
- CPU: 6核
- 内存: 16G
- 硬盘:500G SSD
- 系统:裸的 Ubuntu 16.04
试了Mac和Ubuntu 14.04,Mac中需要安装一堆工具,Ubuntu 14安装Java8很麻烦,都放弃了。囧
安装类库
建议使用阿里云源来加速下载:参考https://mp.csdn.net/mdeditor
apt-get install -y openjdk-8-jdk openjdk-8-jre git flex bison gperf build-essential libncurses5-dev:i386 git flex bison gperf build-essential libncurses5-dev:i386 libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386 dpkg-dev libsdl1.2-dev libesd0-dev git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip m4
下载源码
我使用的是清华的镜像
下载清华版的repo命令行工具
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repo
chmod +x repo
sudo mv ./repo /usr/local/bin
echo "export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'" >> ~/.bashrc
开个新的terminal,让REPO_URL生效
下载源码的初始化包(加速源码下载) 大约30G
wget https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar
解压缩
tar xzvf aosp-latest.tar
解压缩完成之后会多出来~/aosp
目录
切进去cd ~/aosp
(现在看起来里面是空的)
选择安卓版本,版本列表地址
我选择的是支持Pixel XL的最新版, android-8.0.0_r15 (OPR3.170623.008)
根据上面选的版本来切换代码分支
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-8.0.0_r15
然后运行同步,获取完整的源码 (这一步大约需要半个小时吧)
repo sync
下载驱动
因为需要刷机,所以需要这一步,如果只是在虚拟机中运行,可以跳过
驱动列表
根据代码的版本和手机的型号来选择
我的是Pixel XL手机,源码是OPR3.170623.008,在页面上就能搜到这一个:
Pixel XL binaries for Android 8.0.0 (OPR3.170623.008)1. Vendor image2. GPS, Audio, Camera, Gestures, Graphics, DRM, Video, Sensors
下载这两个文件,解压得倒两个.sh文件,移动sh文件到 ~/aosp目录下,分别执行
sh extract-google_devices-marlin.sh
sh extract-qcom-marlin.sh
执行每个sh的时候,首先要同意其协议,很烦,要按Enter一行一行地进行。 如果一直按着,到最后就会自动推出……
小窍门:每个协议基本上都是到8.e结尾,所以一直按着到差不多的地方停下来,慢慢按。
最后输入 “I ACCEPT”, Enter同意
编译
初始化环境
source build/envsetup.sh
选择编译的版本
lunch
运行此步骤会出现很多个选项(太长我就不列出来了)
这些选项决定了编译机型相关的参数,如果是想模拟器跑,选第一个就行。
我选的是 21. aosp_marlin-userdebug
,因为Pixel XL内部代号是marlin
接下里调整一个Java参数,要不然会出现Java OOM错误
export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4096m"
开始编译
根据你机子有几个CPU核,来决定几线程。 一般选择X * 2
我的机子是6核的i7,选的6,让它别太累
make -j10
等着吧,大约几个小时就行了 ?
编译的结果在 ~/aosp/out/target/product/marlin
文件夹中
比较重要的几个是:
- boot.img
- recovery.img
- ramdisk.img
- system.img
- userdata.img
刷机
手机进入fastboot模式 (按电源和音量下重启)
检测手机是否已连接
fastboot devices
写入文件
fastboot -w flushall
Ubuntu16.04编译Android8.0系统源码,并刷机 (Pixel XL)相关推荐
- Ubuntu16.04编译android6.0.1源码记录
目录 目录 一.安装环境 二.下载源码 1.下载repo 2.初始化repo 3.同步源代码 关于驱动 三.编译源码 四.导入源码到AS 五.刷入真机 六.修改源码 总结: 3.同步源代码 关于驱动 ...
- Ubuntu12.04编译Android4.0.1源码全过程-----附wubi安装ubuntu编译android源码硬盘空间不够的问题解决
Ubuntu12.04编译Android4.0.1源码全过程-----附wubi安装ubuntu编译android源码硬盘空间不够的问题解决 参考文章: (1)Ubuntu12.04编译Android ...
- Ubuntu16.04编译Android10源码并刷机Pixel
一.环境描述 电脑配置: 系统:Windows10 内存:16GB 硬盘:500GB 软件环境: VirtualBox虚拟机 虚拟配置: 系统:Ubuntu16.04.7 内存:9GB 硬盘:300G ...
- Android FrameWork学习(一)Android 7 0系统源码下载 编译
最近计划着研究下 Android 7.0 的系统源码,之前也没做过什么记录,这次正好将学习的内容记录下来,方便以后复习巩固. 既然要学习我们的系统源码,那我们第一步要做的就是下载源码并进行编译了. # ...
- Android FrameWork学习(一)Android 7.0系统源码下载\编译
重点内容 转载. http://blog.csdn.net/cjpx00008/article/details/60474883 硬件环境要求 1. 编译环境 按照官方的说法,编译Android 2. ...
- Ubuntu12.04下Android4.0.4源码的下载及其编译过程
Ubuntu12.04下Android4.0.4源码的下载及其编译过程 http://www.jizhuomi.com/android/environment/427.html
- Window 10 使用WSL2下载编译Android 10 系统源码,并用sourceInsight 4 看系统源码
一.Window 10 安装WSL2 安装教程来自微软官网:https://docs.microsoft.com/zh-cn/windows/wsl/install-win10 步骤 1 - 启用适用 ...
- android 系统源码调试 局部变量值_如何方便快速的整编Android 9.0系统源码?
点击上方"刘望舒",选择"星标" 多点在看,就是真爱! 作者 : 刘望舒 | 来源 :刘望舒的博客地址:http://liuwangshu.cn/fram ...
- Windows10编译MySQL8.0.28源码
Windows10编译MySQL8.0.28源码 版本信息 软件下载与安装 源码编译 版本信息 操作系统:windows10 x64 Visual Studio版本:Visual Studio2022 ...
最新文章
- 计算机应用基础 网上教学设计方案,《计算机应用基础》(本)教学设计方案.doc...
- DWRUtil的方法使用说明
- 2.Linux磁盘,文件系统管理--创建文件系统
- python输入名字、输出欢迎你_python笔记3-输出输入、字符串格式化
- 【CyberSecurityLearning 68】python 编写exp
- C++直接初始化与复制初始化的区别深入解析
- 【图像超分辨率】Understanding Deformable Alignment in Video Super-Resolution
- c++动态内存管理题目
- mysql报错级别_MySQL启动出现几个警告级别错误
- 为GridView-Delete列添加确认对话框(2种方法)
- java获取标准输出到文件_IO java标准输入与输出
- 1.4、设置 SpringApplication 主启动类
- windows下mysql安装包安装
- mysqlFront连接报错,打开数据库#3167的解决方案
- 北京邮电大学教授杨义先:大数据背景下的信息安全风险及防御
- Minesweeper 蓝桥杯 扫雷游戏(化繁为简)(摒弃多层循环)
- C语言计算线性方程组
- Landsat8遥感影像批量分割(Arcmap实现)
- android 手电筒 开源,Android 手电筒
- 测试手机信号强弱软件,快来测试一下你的手机信号强度吧!
热门文章
- 让Mac Dock栏(程序坞)只显示已打开的应用程序软件
- 数学公式编辑软件有哪些?高效软件说明
- Paper Reading||PROFIT: A Novel Training Method for sub-4-bit MobileNet Models
- kvm切换器在机场控制中心及实训模拟控制室应用
- shell mysql awk_今日推荐:shell 三剑客之文本处理工具awk
- 计算机在人工应用,下列属于计算机在人工智能方面的典型应用是()。
- python类中调用另一个程序函数_Python:如何在另一个类中调用函数
- 微信小程序门诊医院体检挂号缴费药品信息管理系统+后台管理系统SSM-JAVA【数据库设计、论文、源码、开题报告】
- 恋爱换装养成手游风靡市场,女性游戏市场要崛起了吗?
- 简单易用的运动控制卡(五):IO配置与回零运动