0 前言

问:都快2022年了,为什么还要编译 android 7.1.2 ?

答:某脱壳机特征修改或移植到其他机型(此处省略1000字...)

笔者在编译之前并没有加入专有二进制文件(后续加入了再补充笔记),以供真机运行时一些硬件设备驱动都正常运行,详细请参考谷歌官方教程:https://source.android.com/setup/build/downloading#obtaining-proprietary-binaries 自备出国留学工具

主机配置:Windows 10 HOME | I7 12700KF | 海盗船 32G DDR4 3200MHz 双通道 | 西数 SN570 1T PCIE 3.0

虚拟环境:Ubuntu 18.04 Bionic (VMware) | 8C 16G

编译目标:NZH54D | android-7.1.2_r33 | Pixel (sailfish)、Pixel XL (marlin)

准备开始,接下来的每个完成一个步骤,都打个备份点,方便还原编译其它AOSP版本

1 系统安装

虚拟机和系统安装过程省略(网上大堆教程)...

改源

# backup sources.list
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
# replace
sudo sed -i 's#//.*archive.ubuntu.com#//mirrors.aliyun.com#g' /etc/apt/sources.list
sudo sed -i 's#//.*security.ubuntu.com#//mirrors.aliyun.com#g' /etc/apt/sources.list
# update
sudo apt update

安装常用软件包

sudo apt install curl vim htop tmux lolcat tree

关闭屏幕休眠

设置 → 电源 → 节点 → 改为从不

2 源码同步(环境准备)

python

sudo apt install python

git

sudo apt install git
git config --global user.email "youremail@email.com"
git config --global user.name "yourname"

repo

mkdir ~/bin
PATH=~/bin:$PATH
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > ~/bin/repo
# curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo

3 源码同步

如果不指定分支默认获取 master,如需签出 master 之外的其他分支,请使用 -b 指定此分支。 如需查看分支列表,请参阅源代码标记和 build

cd; mkdir aosp; cd aosp;
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-7.1.2_r33 --repo-url=https://gerrit-googlesource.lug.ustc.edu.cn/git-repo
repo sync -j8 # 同步源码到最新状态,-j8 是开启八个线程同时下载

大概要下载100多g,联通500M,实测耗时70分钟左右

4 源码编译(环境准备)

当前记录是针对 android 7.1.2,依赖环境如下,如果编译更高版本,环境也许不同,所以编译环境在下载源码之后进行会方便VMware打备份点

jdk

sudo apt install openjdk-8-jdk

提前修复编译时错误:SSL error when connecting to the Jack server. Try 'jack-diagnose'

  • sudo vim /etc/java-8-openjdk/security/java.security
  • 搜索找到这行代码:jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA, \
  • 删除 TLSv1, TLSv1.1, 后保存

如果没有提前修复,而是编译过程中报错了再修复这个问题的话,需要在修复之后重启 jack-admin,命令如下

  • cd ~/aosp/prebuilts/sdk/tools/
  • ./jack-admin kill-server
  • ./jack-admin start-server

python

Ubuntu 18.04 自带 Python 3.6.9,编译 aosp 7.1.2 需要用 Python 2.x

如果编译更高版本可能依赖 Python 3,命令如下,现在不需要执行

# sudo apt install python3
# sudo ln -sfn /usr/bin/python3 /usr/bin/python

其他

sudo apt 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

5 源码编译

开始编译

如果在没有参数的情况下运行,则 lunch 会提示您从菜单中选择目标。如需了解所有现有设备的构建配置,请参阅择设备构建系统

make -j20 是使用多少个线程编译,一般为CPU核心数×2,我这里多给了4,实测也没什么问题,并且编译速度确实提升了不少。

# cd ~/aosp
# rm -rf out
export LC_ALL=C
source build/envsetup.sh
lunch 18 # aosp_sailfish-userdebug
make -j20

编译成功

实测耗时

  8C 16G make j16 35分 CPU占用50%左右

  8C 16G make j20 30分 CPU占用55%左右 资源占用和耗时比 最佳

10C 20G make j20 28分 CPU占用65%左右

12C 16G make j24 27分 CPU占用80%左右

12C 24G make j24 26分 CPU占用80%左右

输出目录 out/target/product/产品代号

ubuntu@ubuntu1804:~/aosp/out/target/product/sailfish$ du -h *.img
25M boot.img
6.4M ramdisk-recovery.img
1.5M ramdisk.img
825M system.img
223M system_other.img
146M userdata.img

Ubuntu 18.04 WMware 编译 AOSP android-7.1.2_r33 笔记的更多相关文章

  1. ubuntu 18.04下编译最新版本的KMS

    KMS:kurento媒体服务,即 kurento media server 很庞大的一个WEBRTC项目,GIT库主项目:https://github.com/Kurento 基础实现,修改了gst ...

  2. Ubuntu 18.04 手动编译安装 ffmpeg

    ffmpeg 是一个由提供对视频.音频和其他多媒体流文件进行处理功能的库和程序构成的自由软件项目,其常被用于适用于不同格式的音频和视频的录影.转换和流处理等场合.这里记录在 Ubuntu 18.04 ...

  3. Ubuntu 18.04编译AOSP源码

    总结一下我从Ubuntu 18.04下编译成功AOSP的过程,以及遇到的坑 我的电脑配置: OS: Ubuntu 18.04 bionic Kernel: x86_64 Linux 4.18.0-17 ...

  4. 加密通信软件Signal 2.92版本编译安装折腾手记(Ubuntu 18.04)

    加密通信软件Signal 2.92版本编译安装折腾手记(Ubuntu 18.04) 前言 加密通信软件Signal是开源的,安全性很高,号称斯诺登也推荐大家使用.既然这么好,那必然会有不少人去尝试复制 ...

  5. Ubuntu 18.04 编译 ijkplayer

    Ubuntu 18.04 编译 ijkplayer 1. 配置安装源 https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu 2. 配置好安装源后,安装一些组 ...

  6. Ubuntu 12.04 64bit 配置完android 5.0编译环境后出现“could not write bytes: Broken pipe.”而无法进入输入帐号密码的登陆界面

    Ubuntu 12.04 64bit 配置完android 5.0编译环境后出现“could not write bytes: Broken pipe.”而无法进入输入帐号密码的登陆界面.上网问了问百 ...

  7. Ubuntu 18.04 下配置 HAXM 加速 Android模拟器

    Ubuntu 18.04 下配置 HAXM 加速 Android模拟器 最近在vmware环境下搭建ubuntu18.04开发环境,开始发现总是运行android模拟器在console提示加载如下错误 ...

  8. [笔记] Ubuntu 18.04源码编译安装OpenCV 4.0流程

    标准常规安装方法安装的OpenCV版本比较低,想尝鲜使用4.0版本,只好源码安装. 安装环境 OS:Ubuntu 18.04 64 bit 显卡:NVidia GTX 1080 CUDA:10.0 c ...

  9. Ubuntu 18.04及Snap体验——让Linux入门更简单(转))

    https://www.linuxidc.com/Linux/2018-06/152993.htm 初次听说过Linux的时候,是大一计算机课时候老师介绍说除了Windows还有Linux.Unix操 ...

随机推荐

  1. Java:Set接口小记

    Java:Set接口小记 对 Java 中的 Set接口 与 其实现类,做一个微不足道的小小小小记 概述 public interface Set<E> extends Collectio ...

  2. spring源码分析(二)- 容器基础

    1.基本用法 用过Spring的都知道,bean是Spring中最基础也是最核心的.首先看一个简单的例子. 一个类和一个配置文件 package bean; public class MyBean { ...

  3. 学习手册 | MySQL篇 · 其一

    InnoDB关键特性 插入缓冲(Insert Buffer) 问题:   在InnoDB插入的时候,由于记录通常都是按照插入顺序,也就是主键的顺序进行插入的,因此,插入聚集索引是顺序的,不需要随机IO ...

  4. CODING 助力江苏高速信息实现组织敏捷与研发敏捷,领跑智慧交通新基建

    疫情之下的高速公路管控重任 江苏高速公路信息工程有限公司(以下简称:江苏高速信息)成立于 2002 年,是江苏交通控股旗下,专业从事高速公路领域机电系统集成.智能交通软硬件研发.大数据分析运营的高新技 ...

  5. 為什麼我的手機連Wi-Fi速度總是卡在75Mbps?Wi-Fi速度解惑~帶你一次看懂!

    正文字体大小:大 中 小 為什麼我的手機連Wi-Fi速度總是卡在75Mbps?Wi-Fi速度解惑-帶你一次看懂! (2017-02-21 10:57:48) 转载▼ 标签: wi-fi速度 手機wi- ...

  6. 集合先从ArrayList开始

    本篇文章非常建议直接从经典Demo开始哦~ 一.ArrayList简介 ArrayList 的底层是数组队列,相当于动态数组.与 Java 中的数组相比,它的容量能动态增长.在添加大量元素前,应用程序 ...

  7. 彻底解决SLF4J的日志冲突的问题

    今天公司同事上线时发现,有的机器打印了日志,而有的机器则一条日志也没有打.以往都是没有问题的. 因此猜测是这次开发间接引入新的日志jar包,日志冲突导致未打印. 排查代码发现,系统使用的是SLF4J框 ...

  8. Canvas 放烟花合集 -- 用粉丝头像做成烟花绽放🧨

    "我对着烟花许愿,希望你永远在我身边" "凑不够满天星辰那就去看看烟花吧,人间烟火气,最抚凡人心" 小tips:喜欢的可以关注博主私信代码噢~ 也可以看看前面两 ...

  9. 如何将声学的spectrogram(声谱图)重新反变换成时域语音信号

    最近在研究一些信号分析的事情,感兴趣如何将频谱信号反变换成时域信号.fft 与ifft可以顺畅的转变,但是这个是一帧信号,当时间较长的信号再一起是,通过反变换变成一帧一帧的时域信号,如何把他们拼接起来 ...

  10. conda无法导入,pip可以导入

    在conda中创建测试的虚拟环境 进入test虚拟环境,输入命令:conda install keras 输入命令python,进入python环境,输入import keras 返回错误,No mo ...