Ubuntu20.04.2LTS 环境下,Android11(R)版本源码下载,编译,Pixel4刷机

前言:前段时间为了给Pixel4刷机,下载源码、编译、刷机,踩了无数个坑,也花了很多时间,在这里做个笔记,便于以后避坑,也给以后遇到同样问题的同学一些参考

一、源码下载

  1. 下载 android11 需要python3.9

1、sudo apt update
2、sudo apt install software-properties-common
3、sudo add-apt-repository ppa:deadsnakes/ppa
4、sudo apt install python3.9//查看python版本号,确认是否安装成功
5、python3.9 -V

如果python还安装了其他版本需要切换版本到3.9版本

  1. 安装git

sudo apt-get upgrade
sudo apt-get install git
git config --global user.email "xxxxxxx@gmail.com"
git config --global user.name "xxxxx"
  1. 安装curl

sudo apt-get install curl
  1. 配置环境变量,安装repo(使用清华镜像站下载)

mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo

打开bin文件夹下的repo文件,将

REPO_URL = 'https://gerrit.googlesource.com/git-repo'

改为

REPO_URL = 'https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'
  1. 初始化仓库、选择分支、同步

创建放源码的文件夹

mkdir android11.0.0
cd android11.0.0

初始化仓库

repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest

切换到指定分支

repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-11.0.0_r36

这里的 android-11.0.1_r36 是源码分支,需要填写对应设备的分支,可点击这里查询(没有梯子的可以在百度上搜):分支列表

同步源码树

repo sync

不出意外的话,几个小时就下载好了

二、源码编译

  1. 准备编译环境

安装jdk

sudo apt-get update
sudo apt-get install openjdk-8-jdk

构建编译环境依赖

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

如果只是运行模拟器忽略这一步,我的设备Pixel4手机需要下载驱动编译脚本–脚本链接,下载机器对应的驱动编译脚本文件并解压,得到extract-google_devices-flame.sh和extract-qcom-flame.sh,放到源码的根目录执行(会让输入 I ACCEPT,回车别按的太快),执行后会得到vender目录

  1. 开始编译

//进入源码根目录
cd android11.0.0
source build/envsetup.sh
lunch

选择自己需要的编译配置,点这里配置列表(需要梯子)或者下表查看配置

我是Pixel4设备所以要选aosp_flame_userdebug也就是22然后回车,如果只运行模拟器,则需要选择电脑对应cpu架构的配置(不然模拟器运行不起来),一般电脑的CPU架构是X86(可以根据电脑选择29或者30)

开始编译:

make -j8

这里的8为CPU的线程数量,如果电脑配置不太好,建议直接:

make

不出意外的话几个小时后编译OK

//运行模拟器,如果选择模拟器的话到这里就可以看到源码编译的系统了
emulator

三、刷机

  1. 安装adb

apt-get install android-tools-adb

连接上手机

  1. 开始刷机

进入bootloader模式

adb reboot bootloader

解锁设备

fastboot flashing unlock

配置ANDROID_PRODUCT_OUT环境

export ANDROID_PRODUCT_OUT=/home/ubuntu/android11.0.0/out/target/product/flame

开始刷机

fastboot flashall -w

完成

四、过程中遇到的问题

1:找不到 ncurses.so 库

sudo apt-get install -y libncurses5

2:内存不足

增加Swap分区
1.创建交换分区的文件:增加4G大小的交换分区,count 为块大小。
# dd if=/dev/zero of=/home/swapfile bs=1M count=4096
2.设置交换分区文件:
# mkswap /home/swapfile  # 建立swap 的文件系统
3.立即启用交换分区文件:
# swapon /home/swapfile   #启用swap文件
4.使系统开机时自启用,在文件/etc/fstab中添加一行:
/home/swapfile swap swap defaults 0 0

3:Out of memory error

在make前输入(增加JVM内存)
export _JAVA_OPTIONS="-Xmx8g"

如果还不能解决,可以在编译时,打开系统监视器看一下内存,不够的话需要加内存条或者换其他android版本

4:找不到vendor/qcom/coral/proprietary/com.qualcomm.qcrilmsgtunnel.xml
这里可能是Google工程师写错了吧,找到源头改一下路径就可以了
源头在:vendor/qcom/flame/device-partial.mk

vendor/qcom/coral/proprietary/com.qualcomm.qcrilmsgtunnel.xml:system_ext/etc/permissions/com.qualcomm.qcrilmsgtunnel.xml \

改为

vendor/qcom/flame/proprietary/com.qualcomm.qcrilmsgtunnel.xml:system_ext/etc/permissions/com.qualcomm.qcrilmsgtunnel.xml \

即可

5:刷机过程中报错 :FAILED (remote: Partition should be flashed in fastbootd),原因是adb版本太旧,可以通过( adb version )查看版本号,需要到官网下载SDK Platform Tools,替换掉原来的目录(usr/lib/android-sdk/platform-tools)

6:刷机时发现缺少镜像文件,或者刷完机开不起机可以排查下源码分支、build配置和驱动脚本

Ubuntu20.4环境下,Android11(R)源码,下载,编译,Pixel4刷机相关推荐

  1. Ubuntu 22.04环境下安装lxr源码阅读器详细过程

    Ubuntu 22.04环境下安装lxr源码阅读器详细过程 一.lxr介绍 二.依赖关系 三.安装过程 1.下载源码 2.执行检查 3.安装依赖 4.安装数据库和服务器 四.配置过程 1.主配置 2. ...

  2. Ubuntu20.4 Android-9.0.0_r46源码下载编译

    Ubuntu20.4 Android-9.0.0_r46源码下载编译调试 安装Ubuntu虚拟机 ubuntu镜像下载地址: https://ubuntu.com/download 官网下载地址较慢可 ...

  3. win10下llvm的源码安装编译

    win10下llvm的源码安装编译 1.下载llvm源码 2.下载安装cmake 你好!如需转载请标明本文出处. 1.下载llvm源码 下载llvm源码:https://github.com/llvm ...

  4. Android AOSP和Android-X86源码下载编译终极普法

        Android AOSP和Android-X86源码下载编译终极普法 引言   最近有朋友在询问怎么下载Android AOSP源码和Android-X86源码,编译学习!其实这个说简单也简单 ...

  5. RedHat6.4系统下LAMP环境的搭建---(源码包编译安装)---v1.0

    一:配置本地yum源 :--目录 作者:李文轩 座右铭:一个愿意为理想奋斗终生的人! 联系QQ:838997384 网站地址:www.74cto.com 说明:本篇安装的系统版本RedHat6.4(6 ...

  6. 从零开始搭建Ubuntu 环境下的Android 源码开发环境

    本文从一个干净的Ubuntu 10.04 操作系统出发,一步一步引导你搭建自己的基于eclipse IDE 的Android源码开发环境. 正文会包含一下这些内容: 获得源码 编译源码准备工作 编译工 ...

  7. android4.4源码下载 windows,android4.4_android4.0 x86笔记本安装及开发环境搭建_android4.4源码下载...

    Android 4.0让手机和平板电脑最终走到了一起,这是多么唯美的一件事,其实不仅仅有手机和平板,甚至连PC也与他们同路.日前Android for x86放出了最新的Android 4.0版,这也 ...

  8. 从谷歌官网下载android 6.0源码、编译并刷入nexus 6p手机

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/fuchaosz/article/details/52473660 1 前言 经过一周的奋战,终于从谷 ...

  9. [Android编译(二)] 从谷歌官网下载android 6.0源码、编译并刷入nexus 6p手机

    1 前言 经过一周的奋战,终于从谷歌官网上下载最新的Android 6.0.1_r62源码,编译成功,并成功的刷入nexus6p,接着root完毕,现写下这篇博客记录一下实践过程. 2 简介 自己下载 ...

最新文章

  1. 主要推荐系统算法总结及Youtube深度学习推荐算法实例概括
  2. Java精讲:生产者-消费者
  3. SQLite学习手册(命令行工具)
  4. WebBrowser脚本错误的完美解决方案
  5. 推荐一款生成SQL插入语句的软件
  6. 『设计模式』状态模式(不起花里胡哨的名字了)
  7. 动态规划经典算法--最长公共子序列 LCS
  8. 杭电 1233 最小生成树 kruskal()算法
  9. Fiddler 抓包详细使用教程
  10. 程序闪退怎么运行_苹果应用程序崩溃闪退怎么办?如何解决苹果设备的软故障?...
  11. 【课程】MIT深度学习课程:架起理论与实践的桥梁
  12. 矩池云上安装CUDA头文件教程
  13. 京东抄袭源码;腾讯回应裁员;新 iPad Pro 十月发布 ​| 极客头条
  14. css3动画保持状态不变
  15. 绵阳创客开发长语音识别平台 1小时语音10分钟转化为文字
  16. java我的世界1.14.4_我的世界1.14.4国际版下载
  17. linux下开通ssh
  18. 计算机专业毕业答辩ppt优秀范例,毕业论文答辩PPT模板优秀范例课件.ppt
  19. RS485,uart串口加瑞芬68协议
  20. Python——利用协程实现视频的拖影效果

热门文章

  1. node.js转换shp文件数据的坐标系
  2. 中断使能和清除使能、中断挂起和清除挂起
  3. Aqara首次发布会三大预测 全屋智能生活体验再次升级
  4. Linux--pthread_once 的用法
  5. 小程序入门第二课 — 组件与WXML语法
  6. CHROME扩展笔记之webRequest·图片拦截
  7. 第1040期机器学习日报(2017-07-24)
  8. 2020 中国移动的流量套餐
  9. 开发一个会员管理系统
  10. Java文件读操作(两种read方法)