Ubuntu 16.04下载编译Android11源码

  • Ubuntu 16.04下载编译Android11源码
    • 1. 硬件要求
    • 2. 设置Linux构建环境
      • 1. 安装所需的软件包
      • 2. 安装Open JDK1.8
      • 3. 安装git
      • 4. 安装Python3.7
    • 3. 源码下载
      • 1. 下载repo
      • 2. 下载Android11 源码
      • *3. 获取专有二进制文件
    • 4. 编译 Android
    • 5. kernel下载编译
    • 6. 合入内核,重新编译
    • 7. 刷入设备
      • 1. 构建 `fastboot` 和 `adb`,如果你没有 `fastboot` 和 `adb`,可以使用常规构建系统进行构建。
      • 2. 解锁引导加载程序
      • 3. 刷写设备

1. 硬件要求

必须达到或超出以下硬件要求:

  • 如果是 Android 2.3.x (Gingerbread) 及更高版本(包括 master 分支),需要 64 位环境。如果是较低的版本,则可以在 32 位系统中进行编译。
  • 如果要检出代码,至少需要 250 GB 可用磁盘空间;如果要进行构建,则还需要 150 GB。如果要进行多次构建,则需要更多空间。
  • 至少需要 16 GB 的可用 RAM/交换空间。

2. 设置Linux构建环境

1. 安装所需的软件包

sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig

2. 安装Open JDK1.8

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

注意: 如果系统已经安装了jdk,多个JDK版本需要配置和切换。Ubuntu多个JDK版本配置和切换

3. 安装git

安装git:

sudo apt-get install git

配置git:

git config --global user.name xxx
git config --global user.email xxx@qq.com

4. 安装Python3.7

sudo apt-get install python3.7

直接使用apt-get安装python3.7失败。改为手动安装:

  1. python 官网找到python3.7的下载地址:Python3.7.1
    https://www.python.org/ftp/python/python3.7.1/Python-3.7.1.tgz

  2. 下载安装包:

wget https://www.python.org/ftp/python/python3.7.1/Python-3.7.1.tgz
  1. 解压安装,参考手动安装python3.7

3. 源码下载

1. 下载repo

  1. 确保你的主目录中有一个 bin/ 目录,并且它包含在你的路径中:
mkdir ~/bin
PATH=~/bin:$PATH
  1. 下载 Repo 启动器,并确保它可执行:
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo

2. 下载Android11 源码

创建用于存放源码的目录:

mkdir aosp

进入到 aosp目录,初始化仓库,并指定版本:android-11.0.0_r17

cd aosp
repo init -u https://android.googlesource.com/platform/manifest -b android-11.0.0_r17

下载Android源代码树:

repo sync

*3. 获取专有二进制文件

如果只是编译运行于虚拟器,则不需要下载设备驱动文件。我们使用真机调试(这里使用的是Pixel 3a),所以需要下载对应源码分支真机驱动,并解压到源码目录一起编译。

代号、标记和 Build 号

下载的代码分支为:android-11.0.0_r17,对应的build ID为: RP1A.201105.002,

下载样机对应Android分支的驱动文件:
Google驱动程序

解压驱动文件到源码目录:

执行解压后的 .sh文件。

4. 编译 Android

  1. 设置环境,使用 envsetup.sh 脚本初始化环境:
source build/envsetup.sh

*说明:
如果之前已经编译过,重新编译需要清除缓存和之前生成的文件

make clobber // 清除缓存
  1. 选择目标:
    使用 lunch 选择要构建的目标。lunch product_name-build_variant 会选择 product_name 作为需要构建的产品,并选择 build_variant 作为需要构建的变体,然后将这些选择存储在环境中,以便供后续对 m 和其他类似命令的调用读取。

设备对应代号

我们使用Pixel 3a真机调试,其对应代号:sargo,编译配置:aosp_sargo-userdebug

lunch aosp_sargo-userdebug

  1. 编译,并把log保存到build.log文件。
make -j4 2>&1 | tee build.log

5. kernel下载编译

创建用于存放kernel的目录:

mkdir kernel

进入到 kernel目录,初始化仓库,并指定分支:

cd kernel
repo init -u https://android.googlesource.com/kernel/manifest -b android-msm-bonito-4.9-android11

设备对应内核分支

下载kernel源代码:

repo sync

编译内核:

./build/build.sh

6. 合入内核,重新编译

将内核合入image:

export TARGET_PREBUILT_KERNEL=/home/lxy/kernel/out/android-msm-pixel-4.9/private/msm-google/arch/arm64/boot/Image.lz4-dtb

编译:

cd ~/aosp
make bootimage

7. 刷入设备

1. 构建 fastbootadb,如果你没有 fastbootadb,可以使用常规构建系统进行构建。

make fastboot adb

2. 解锁引导加载程序

只有在引导加载程序允许的情况下,您才可以刷写自定义系统。但请注意,引导加载程序默认处于锁定状态。您可以解锁引导加载程序,但这样做会导致系统出于隐私原因而删除用户数据。解锁之后,系统会清空设备上的所有数据,即应用中的私人数据以及可通过 USB 访问的共享数据(包括照片和影片)。请先备份设备上的所有重要文件,然后再尝试解锁引导加载程序。

自 2014 年以来发布的所有 Nexus 和 Pixel 设备(从 Nexus 6 和 Nexus 9 开始)都内置有恢复出厂设置保护功能,需要执行多个步骤才能解锁引导加载程序。

如需在设备上启用 OEM 解锁功能,请执行以下操作:

  1. 在“设置”中,点按关于手机,然后点按版本号七次。
    a. 当看到“您已处于开发者模式”这条消息后,点按返回按钮。
    b. 点按开发者选项,然后启用 OEM 解锁USB 调试(如果 OEM 解锁处于停用状态,请连接到互联网,以便设备可以至少检入一次。如果“OEM 解锁”仍处于停用状态,说明设备可能已被运营商锁定 SIM 卡,系统无法解锁引导加载程序。)

  2. 重新启动进入引导加载程序,然后使用 fastboot 解锁。

fastboot flashing unlock
  1. 在屏幕上确认解锁。

3. 刷写设备

  1. 在启动时按住相应的组合键或使用以下命令使设备进入 fastboot 模式:
adb reboot bootloader
  1. 在设备处于 fastboot 模式后,运行以下命令:
fastboot flashall -w

-w 选项会擦除设备上的 /data 分区;该选项在您第一次刷写特定设备时非常有用,但在其他情况下则没必要使用。

第一次需要刷入所有img文件,之后只需要刷入修改模块的img文件,如:

fastboot flash boot out/target/product/sargo/boot.img
  1. 刷入内核:
fastboot flash dtbo /home/lxy/kernel/out/android-msm-pixel-4.9/private/msm-google/arch/arm64/boot/dtbo.img
fastboot boot /home/lxy/kernel/out/android-msm-pixel-4.9/private/msm-google/arch/arm64/boot/Image.lz4-dtb
  1. 推入.ko 文件:
    提示: 需要先对设备进行remount后才能成功推入,否则会推入失败,同时remount后还需要重启设备,才能生效。
adb root
adb remountadb push /home/lxy/kernel/out/android-msm-pixel-4.9/dist/*.ko /vendor/lib/modules/

Ubuntu 16.04下载编译Android11源码相关推荐

  1. android .9编译,在Ubuntu 9.04下编译Android源码

    一直都是刷官方的版本,准备自己编译一下刷机. 首先是下载,Android的源码是托管在Linux Kernel的源码站点,所以版本工具是git.关于git的使用和安装请见我的另一篇文章<在Ubu ...

  2. Ubuntu 16.04 下载、编译 友善之臂NanoPC-T2的Android5.1.1源码

    友善之臂官网: http://www.arm9.net 友善之臂NanoPC-T2维基使用手册链接: http://wiki.friendlyarm.com/wiki/index.php/NanoPC ...

  3. Ubuntu 16.04安装编译MRPT 1.5.7

    Ubuntu 16.04安装编译MRPT MRPT(Mobile Robot Programming Toolkit,移动机器人编程工具箱)的安装 1.准备必需的环境依赖 sudo apt insta ...

  4. win10最新下载编译Android源码的简易方法分享(已亲测)

    win10最新下载编译Android源码的简易方法分享(已亲测) 准备至少150G的硬盘空间 win+R 输入control 打开程序与功能-启用或关闭Windows功能 勾选"适用于Lin ...

  5. ubuntu 16.04 编译android,Ubuntu 16.04 64bit 编译 Android 4.4 源码

    1.获取Android源码 (1)下载repo 在用户目录下创建一个bin文件夹来存放repo,并把该路径设置到环境变量中mkdir ~/binPATH=~/bin:$PATH 下载repo脚本cur ...

  6. Ubuntu 15.04 安装TensorFlow(源码编译) 及测试梵高作画

    介绍Google的TensorFlow机器学习开源库,在UbuntuKylin上的安装和和源码编译. 原始官方文档参见:http://www.tensorflow.org. 本电脑配置如下: 3.19 ...

  7. ubuntu20.04修改编译chromium源码实战

    首先,利用vmware搭建ubuntu20.04的虚拟机 由于chromium的源码比较大,在git的时候需要分配数据交换的大小,如果小了就下不下来.所以最好给这台虚拟机分配12G内存以上.存储100 ...

  8. Ubuntu18.04系统编译android源码环境配置

    1. 前言 我们做andorid系统开发,肯定时刻与源码打交到,特别是做新项目时,最重要的事情就是下载源码,然后配置环境编译,假如你的电脑是刚重装系统过,一个全新的开发环境,那么首要解决的事情就是完善 ...

  9. ubuntu下wget下载Linux内核源码、make生成.config文件

    根据资料,如果要调试Linux内核源码,需要自己编译内核源码:原因是,一般下载的内核并不是为调试而编译的,要在编译时开启 "Compile the kernel with debug inf ...

最新文章

  1. 自动售货机编程_Rosmaro中基于视觉自动机的编程简介
  2. windows系统c++多线程开发
  3. memset 结构体内指针_数据结构之线性表应用——内存管理
  4. 遇见未来 | 软件定义数据中心:人类文明运行在软件之上
  5. linux---編輯器
  6. 使用Jacob自动替换书签内容
  7. JAVA各类基础高级面试题和中间件面试题资料
  8. U盘被写保护怎么解除?
  9. 迅雷下载太慢怎么办?
  10. RS/CQI/SINR/RSRP/RSSI都是什么意思?
  11. 自动化测试框架rf(Robot Framework)的安装
  12. 如何远程桌面局域网内计算机,如何使用远程桌面控制局域网中的另一台计算机...
  13. PS新手教程!五分钟绘制一张半调效果的耐克体育海报
  14. C++:求整数num中包含因子k的个数
  15. 《云计算核心技术剖析》迷你书连载三 – 云计算的商业模式
  16. Agent and recipient nouns
  17. HTML5画布Canvas线段、矩形、弧形及贝塞尔曲线等简单图形绘制
  18. 思科刀片服务器统一计算系统,思科统一计算系统白皮书.doc
  19. 最大的郁闷,关于psp的升级问题
  20. 第三方支付重新洗牌,拉卡拉支付能否激流勇进?

热门文章

  1. 下载 axios.js 文件到本地
  2. Pintos project 1 实验报告(代码分享)
  3. 注意力机制(Attention Mechanism)-ECANet
  4. 0.前端简历编写和面试前准备
  5. ai如何置入_ai图片(ai怎么把图片嵌入到图形里)
  6. 广告投放相关专业名词整理
  7. 设计模式随笔-锦囊妙计
  8. Android百度地图开发之指南针
  9. 身体检查 生化全套 血常规 微量元素
  10. Markdown语法学习