机子

  • 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)相关推荐

  1. Ubuntu16.04编译android6.0.1源码记录

    目录 目录 一.安装环境 二.下载源码 1.下载repo 2.初始化repo 3.同步源代码 关于驱动 三.编译源码 四.导入源码到AS 五.刷入真机 六.修改源码 总结: 3.同步源代码 关于驱动 ...

  2. Ubuntu12.04编译Android4.0.1源码全过程-----附wubi安装ubuntu编译android源码硬盘空间不够的问题解决

    Ubuntu12.04编译Android4.0.1源码全过程-----附wubi安装ubuntu编译android源码硬盘空间不够的问题解决 参考文章: (1)Ubuntu12.04编译Android ...

  3. Ubuntu16.04编译Android10源码并刷机Pixel

    一.环境描述 电脑配置: 系统:Windows10 内存:16GB 硬盘:500GB 软件环境: VirtualBox虚拟机 虚拟配置: 系统:Ubuntu16.04.7 内存:9GB 硬盘:300G ...

  4. Android FrameWork学习(一)Android 7 0系统源码下载 编译

    最近计划着研究下 Android 7.0 的系统源码,之前也没做过什么记录,这次正好将学习的内容记录下来,方便以后复习巩固. 既然要学习我们的系统源码,那我们第一步要做的就是下载源码并进行编译了. # ...

  5. Android FrameWork学习(一)Android 7.0系统源码下载\编译

    重点内容 转载. http://blog.csdn.net/cjpx00008/article/details/60474883 硬件环境要求 1. 编译环境 按照官方的说法,编译Android 2. ...

  6. Ubuntu12.04下Android4.0.4源码的下载及其编译过程

    Ubuntu12.04下Android4.0.4源码的下载及其编译过程 http://www.jizhuomi.com/android/environment/427.html

  7. Window 10 使用WSL2下载编译Android 10 系统源码,并用sourceInsight 4 看系统源码

    一.Window 10 安装WSL2 安装教程来自微软官网:https://docs.microsoft.com/zh-cn/windows/wsl/install-win10 步骤 1 - 启用适用 ...

  8. android 系统源码调试 局部变量值_如何方便快速的整编Android 9.0系统源码?

    点击上方"刘望舒",选择"星标" 多点在看,就是真爱! 作者 :  刘望舒  |  来源 :刘望舒的博客地址:http://liuwangshu.cn/fram ...

  9. Windows10编译MySQL8.0.28源码

    Windows10编译MySQL8.0.28源码 版本信息 软件下载与安装 源码编译 版本信息 操作系统:windows10 x64 Visual Studio版本:Visual Studio2022 ...

最新文章

  1. 计算机应用基础 网上教学设计方案,《计算机应用基础》(本)教学设计方案.doc...
  2. DWRUtil的方法使用说明
  3. 2.Linux磁盘,文件系统管理--创建文件系统
  4. python输入名字、输出欢迎你_python笔记3-输出输入、字符串格式化
  5. 【CyberSecurityLearning 68】python 编写exp
  6. C++直接初始化与复制初始化的区别深入解析
  7. 【图像超分辨率】Understanding Deformable Alignment in Video Super-Resolution
  8. c++动态内存管理题目
  9. mysql报错级别_MySQL启动出现几个警告级别错误
  10. 为GridView-Delete列添加确认对话框(2种方法)
  11. java获取标准输出到文件_IO java标准输入与输出
  12. 1.4、设置 SpringApplication 主启动类
  13. windows下mysql安装包安装
  14. mysqlFront连接报错,打开数据库#3167的解决方案
  15. 北京邮电大学教授杨义先:大数据背景下的信息安全风险及防御
  16. Minesweeper 蓝桥杯 扫雷游戏(化繁为简)(摒弃多层循环)
  17. C语言计算线性方程组
  18. Landsat8遥感影像批量分割(Arcmap实现)
  19. android 手电筒 开源,Android 手电筒
  20. 测试手机信号强弱软件,快来测试一下你的手机信号强度吧!

热门文章

  1. 让Mac Dock栏(程序坞)只显示已打开的应用程序软件
  2. 数学公式编辑软件有哪些?高效软件说明
  3. Paper Reading||PROFIT: A Novel Training Method for sub-4-bit MobileNet Models
  4. kvm切换器在机场控制中心及实训模拟控制室应用
  5. shell mysql awk_今日推荐:shell 三剑客之文本处理工具awk
  6. 计算机在人工应用,下列属于计算机在人工智能方面的典型应用是()。
  7. python类中调用另一个程序函数_Python:如何在另一个类中调用函数
  8. 微信小程序门诊医院体检挂号缴费药品信息管理系统+后台管理系统SSM-JAVA【数据库设计、论文、源码、开题报告】
  9. 恋爱换装养成手游风靡市场,女性游戏市场要崛起了吗?
  10. 简单易用的运动控制卡(五):IO配置与回零运动