使用Ubuntu18.04编译android8.1

2023-05-16

使用虚拟机中的Ubuntu18.04编译android8.1
1、软硬件要求
1.1、硬件

16G的内存;200G的存储盘。
1.2、软件

Ubuntu18.04
这样的软硬件要求并非必须,但是经过测试这样的配置刚好能够正常编译android8.1。
200G的存储盘,正常编译完成,加上虚拟机的大小总共占了190G左右。期间没有删除任何过程文件。
2、确保Ubuntu的apt-get命令能够正常使用

在开始工作时,首先要保证

sudo apt-get update

命令能够正常执行,即首先执行该命令保证apt-get是最新的。
由于工作网络的限制,在使用学校和公司网络时,有可能造成get-apt命令无法使用的问题。即在使用该命令时会出现类似于如下这种错误:

E: 无法下载 http://cn.archive.ubuntu.com/ubuntu/dists/xenial/InRelease 明文签署文件不可用,结果为‘NOSPLIT’(您的网络需要认证吗?)
E: 无法下载 http://cn.archive.ubuntu.com/ubuntu/dists/xenial-updates/InRelease 明文签署文件不可用,结果为‘NOSPLIT’(您的网络需要认证吗?)
E: 无法下载 http://cn.archive.ubuntu.com/ubuntu/dists/xenial-backports/InRelease 明文签署文件不可用,结果为‘NOSPLIT’(您的网络需要认证吗?)
E: 无法下载 http://security.ubuntu.com/ubuntu/dists/xenial-security/InRelease 明文签署文件不可用,结果为‘NOSPLIT’(您的网络需要认证吗?)
E: 部分索引文件下载失败。如果忽略它们,那将转而使用旧的索引文件。

出现这种问题可能是由于使用的网络有问题,所使用的网络把一些源屏蔽掉了。
解决办法是使用私人网络,或者没有加特殊限制的网络,一般家庭网络不会出现类似问题。
3、Ubuntu 18.04配置编译环境
3.1、配置Java8

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

3.2、下载一些依赖

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

由于在编译的时候会出现如下错误

这里先配置好,可以避免编译时出现这个错误。
打开用户目录下的.bashrc文件,即~/.bashrc文件。
在文件最后添加

export LC_ALL=C

如图所示

4、安装git和repo
4.1、安装git代码管理器

如果之前已经安装配置过git,该步骤可以省略。
如果没有则执行如下命令。

sudo apt-get install git

想要正常使用git命令还需配置git的Email和name。

git config --global user.name "your name"
git config --global user.email "XXX@XXX.com"

4.2、下载repo

repo是Android为了方便管理多个git库而开发的Python脚本。repo的出现,并非为了取代git,而是为了让Android开发者更为有效的利用git。

Android源码包含数百个git库,仅仅是下载这么多git库就是一项繁重的任务,所以在下载源码时,Android就引入了repo。

git clone https://aosp.tuna.tsinghua.edu.cn/git-repo/

下载完后,为repo脚本添加可执行权限:

chmod a+x git-repo/repo

然后添加repo(路径目录如:~/git-repo/repo)到PATH环境变量

export PATH=~/git-repo:$PATH

然后到打开~/git-repo/repo文件,将REPO_URL替换为清华镜像地址,以避免下载android源码时可能出现的无法连接到 gerrit.googlesource.com问题。

REPO_URL = 'https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'

替换后如下所示。

# repo default configuration
#
# REPO_URL = os.environ.get('REPO_URL', None)
REPO_URL = 'https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'
if not REPO_URL:
  REPO_URL = 'https://gerrit.googlesource.com/git-repo'
REPO_REV = os.environ.get('REPO_REV')
if not REPO_REV:
  REPO_REV = 'stable'

由于repo脚本是使用python写的。所以虚拟机里面必须安装python才能执行repo脚本。

sudo apt-get install python

5、下载android源码

首先创建一个自己存放源码的目录,我是放在~/Android/source路径下的,然后cd到对应的路径下执行下面命令

repo init -u git://aosp.tuna.tsinghua.edu.cn/platform/manifest

然后执行如下命令可以查看可以下载的android源码分支.

cd .repo/manifests.git/
git branch -a

这里同步android-8.1.0_r41分支并拉取对应分支源码

repo init -u git://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-8.1.0_r41
repo sync

这个过程很漫长,具体时间依据网速而定。我同步了大概7个小时。
如果中间由于网络问题同步失败,可以重复执行

repo sync

如果一切正常最后同步完成之后,会自动将文件checkout,并显示成功。
6、编译Android源码

进到源码目录执行

. build/envsetup.sh

初始化编译环境后,引入了一些执行脚本,其中就包括马上要使用的lunch指令。通过lunch指令可以设置编译目标,所谓的编译目标就是生成的镜像要运行在什么样的设备上。这里我们设置的编译目标是aosp_arm64-eng,因此执行指令

lunch aosp_arm64-eng

简单的说明下,aosp表示Android Open Source Project,arm64表示是使用arm64 cpu的设备,eng表示engineer版本,其直接开放了一些root等权限。当然直接使用lunch命令会列出所有可选的编译目标。

最后,我们便可通过如下命令来开始编译andriod源码

make -j8

这里的j8表示可以开启8个线程来参与编译源码,这里指定的线程数一般应该遵从cpu内核数的2倍这个规律,可以通过cat /proc/cpuinfo查看相关cpu信息。

出现如下所示表示编译成功。

7、运行模拟器

在完成编译后,我们可以直接通过emulator命令来运行模拟器

emulator

运行出如图所示的界面表示模拟成功。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用Ubuntu18.04编译android8.1 的相关文章

  • ubuntu18.04安装ORB_SLAM3以及遇到的问题

    目录 1 安装c 43 43 11 2 安装Pangolin a xff09 安装依赖 b xff09 编译pangolin 切换到pangolin下载包里面 3 安装opencv 4 eigen3安装 5 boost安装 6 编译ORB
  • NUC安装Ubuntu18.04系统

    NUC安装Ubuntu18 04系统 基本信息前言安装过程配置Ubuntu18 04系统镜像安装系统解决系统字体过大 分辨率低的问题测试 其他软件安装 基本信息 Time xff1a 2021 3 9使用NUC版本 xff1a 猎豹峡谷NU
  • Ubuntu18.04下基于ROS和PX4的无人机仿真平台的基础配置搭建

    Ubuntu18 04下基于ROS和PX4的无人机仿真平台的基础配置搭建 参考资料 xff1a https www yuque com xtdrone manual cn basic config 1 11 https blog csdn
  • 深度学习环境配置(Ubuntu18.04+PyTorch1.9.0)

    准备一台有GPU的电脑 一个Ubuntu18 04 xff0c 把软件源换成清华源 xff0c 安装gcc xff08 这个若版本不对可以后续再调整 xff09 安装Anaconda xff1a 选取版本3 5 2 0 xff0c 这个版本
  • ubuntu18.04 cv2.VideoCapture无法读取视频

    源代码 xff1a span class token comment 读取视频 span span class token keyword import span cv2 video file span class token operat
  • 记录ubuntu18.04下搭建nuttx RTOS的过程

    官方参考链接 xff1a https nuttx apache org docs latest quickstart install html Getting started 61 61 gt Installing 主要记录一下按照链接指导
  • ubuntu18.04 pycorrector安装

    今天尝试对语音识别转录后的文字进行纠错 xff0c 然后就试了一下pycorrector xff0c 在安装pycorrector的时候遇见了下面的问题 xff1a base pip install pycorrector Looking
  • ubuntu18.04安装mavros

    安装 mavros 在 Ubuntu 18 04 上很简单 只需要运行几条命令 xff0c 就可以安装完成 首先 xff0c 更新软件包列表 xff1a sudo apt update 然后 xff0c 安装 mavros 包 xff1a
  • TX2安装ubuntu18,ROS

    设备 TX2 8G版本 ubuntu18 04笔记本一台 重要提示 请看完全文再安装 xff01 本文不是手把手教你安装类型教程 给TX2刷系统 看看我的参考博客1吧 最好参考最新的博客 xff0c 现在官网的新版本都不是这样 JetPac
  • 【VINS-Mono】RealsenseD435i运行VINS-Mono,在ubuntu18.04和opencv3和cv_bridge的报错记录

    VINS Mono xff08 A Robust and Versatile Monocular Visual Inertial State Estimator xff09 https github com HKUST Aerial Rob
  • ubuntu18.04更新源方法

    前言 Ubuntu自带默认的软件源指向的服务器是部署在国外的 xff0c 在国内进行软件下载更新时会非常慢 xff0c 可以通过更改源地址指向国内的镜像数据源 xff0c 比如阿里 网易 清华 中科等等 PS xff1a 因为今天群里有人在
  • Ubuntu18.04-ROS-Python-通过周立功Can发送16进制整数

    简介 最近写控制底盘车的驱动 xff0c 使用到can分析仪 xff0c 对于can分析仪的描述和代码可以参考文章 xff0c 其中有一个问题挺困扰我的 xff0c 我们可以直接使用hex 内置函数把10进制整数转换为16进制 xff0c
  • ubuntu18.04 安装Qt交叉编译环境目标机为rk3288

    本文在虚拟机条件下安装成功 xff0c 采用Ubuntu18 04 64位镜像作为编译环境 需要准备材料 交叉编译器 xff1a 目标机器为64位的使用 gcc linaro 6 3 1 2017 05 x86 64 aarch64 lin
  • ubuntu18.04搭建python环境

    注意 xff1a 我使用的是虚拟机 xff0c 在操作前请确保虚拟机可以访问到网络 1 安装python3 9 0解释器 xff0c 配置环境变量 2 配置虚拟环境 一 安装python3 9 0 到 opt python39 更新软件源
  • Ubuntu18.04下pointnet2(pointnet++)复现

    一 nvidia driver 510 43 cuda 11 6 43 cudnn 11 x安装配置 ubuntu18 04安装nvidia driver 510 43 cuda 11 6 43 cudnn 11 x CPU疼的博客 CSD
  • 思岚雷达win与ubuntu18.04连接并测试详细过程

    雷达简介 包含套件 雷达模组 xff08 内置pwm电机驱动 xff09 usb适配器 Micro USB线缆 电源线 接线方式 ps 雷达不需额外的电源供电 xff0c 直接使用电脑USB接口 xff0c 5V供电 驱动安装 USB 适配
  • Ubuntu18.04+思岚激光雷达A2M7+ROS测试

    Ubuntu18 04 43 思岚激光雷达A2M7 43 ROS测试 1 测试环境搭建 测试环境 xff1a Ubuntu18 04 43 ROS Melodic测试工具 xff1a 思岚科技激光雷达A2M7 43 USB转接工具 2 下载
  • secureCRT连接ubuntu18.04

    1 安装ssh服务器 sudo apt get install openssh server 2 ssh服务器安装失败 错误提示 xff1a 下列软件包有未满足的依赖关系 xff1a openssh server 原因 xff1a 系统预置
  • Ubuntu18.04安装AX210驱动

    Linux Support for Intel Wireless Adapters 从官网可以看到AX210支持的内核版本是5 10 43 如果要在低于5 10的内核版本上安装AX210的驱动的话 xff0c 需要安装以下方法操作 xff1
  • 在ubuntu18.04中安装opencv_contrib-3.2.0闭坑记录

    由于最近要在OpenCV3中使用SIFT和SURF特征提取 xff0c 而自从OpenCV2升级到OpenCV3版本后 xff0c SIFT SURF等这些算法都被移出opencv默认项目库 xff0c 而被放到叫opencv contri

随机推荐

  • Transformer 在RxJava中的使用

    Transformer 用途 Transformer xff0c 顾名思义是转换器的意思 早在 RxJava1 x 版本就有了Observable Transformer Single Transformer和Completable Tra
  • 彻底理解kubernetes CNI

    kubernetes各版本离线安装包 CNI接口很简单 xff0c 特别一些新手一定要克服恐惧心里 xff0c 和我一探究竟 xff0c 本文结合原理与实践 xff0c 认真读下来一定会对原理理解非常透彻 环境介绍 我们安装kubernet
  • 将本地项目上传到远程Git服务器

    1 先进入项目文件夹 通过命令 git init 把这个目录变成git可以管理的仓库 git init 2 把文件添加到版本库中 xff0c 使用命令git add 添加到暂存区里面去 xff0c 小数点 34 34 意为添加文件夹下的所有
  • 解决Manifest merger failed : Attribute application@appComponentFactory

    在将butterknife升级到10 0 0的时候遇到问题 xff0c 编译无法通过 Manifest merger failed Attribute application 64 appComponentFactory value 61
  • bindService不能触发onServiceConnected方法的原因

    在android项目中用到AIDL xff0c bindService service connection BIND AUTO CREATE 之后一直不调用 connection中的onServiceConnected方法 可能原因1 1
  • Android应用被浅杀和深杀

    onTaskRemoved 方法在当用户移除应用的一个Task栈时被调用 也就是当用户在最近任务界面把该应用的一个task划掉时 xff0c 或者在最近任务界面进行清理时 这两种情况下onTaskRemoved 都会被调用 xff0c 但在
  • java.lang.OutOfMemoryError: Could not allocate JNI Env

    最近有一些OOM的错误上报 java lang OutOfMemoryError Could not allocate JNI Env 极少量的 java lang OutOfMemoryError pthread create 1040K
  • RecycleView4种定位滚动方式演示

    概述 相信大家在项目中使用RecyclerView时 xff0c 经常会遇到这样的需求 xff1a 将RecyclerView滑动到指定位置 xff0c 或者检索RecyclerView的某一项 xff08 各个项的高度不确定 xff09
  • Java/Android中的引用类型及WeakReference应用实践

    一 背景 一般意义上而言 xff0c Java Android中的引用类型包括强引用 软引用 弱引用 虚引用 不同的引用类型具有各自适用的应用场景 xff0c 并与JVM的GC直接相关 作为Java Android中的引用类型之一 xff0
  • Android 网络切换 发送多次广播问题

    最近发现做项目监听网络切换广播 xff0c 根据网络条件切换一些设置 测试发现每次3G WIFI 或者WIFI到3G xff0c 网络切换的广播都会发出多次 比如3G gt WIFI 会发送三个广播 1 连接wifi 2 关闭手机网络 3
  • 在draw.io中创建容器形状

    draw io中的任何形状都可以变成容器 包含其他多个形状的形状 在绘图区域上移动容器时 xff0c 位于其中的形状将随容器移动 容器可用于指示流程图中的步骤或子过程组 xff0c 数据集合 xff0c 树形图或任何其他具有层次结构的图中的
  • H264基础及RTP分包解包

    一 H 264基础概念 SODB 数据比特串 xff0d xff0d xff1e 最原始的编码数据 RBSP 原始字节序列载荷 xff0d xff0d xff1e 在SODB的后面填加了结尾比特 xff08 RBSP trailing bi
  • Mac App Store中的开发预览版软件更新如何关闭(如Safari 12.0 seed)

    这段时间莫名其妙App Store中出现Safari 12 0 seed开发预览版更新 xff0c 这个是针对开发者提供的 xff0c 作为普通用户 xff0c 不希望接触到这种bug不断的产品 xff0c 那么 xff0c 该如何关闭呢
  • 在VMware-player中安装 VMware Tools的步骤

    1 用root身份登录ubuntu后 xff0c player 管理 安装VMware Tools 3 把上述文件复制到 home 用户为名的文件夹中 例如本人把上述文件复制到 home tgl tglFile中了 4 xff09 首先我进
  • ubuntu18.04编译问题

    1 没有安装curl fantasy 64 fantasy All Series my dev android AOSP prebuilts sdk tools jack admin start server prebuilts sdk t
  • VMware 扩展Ubuntu虚拟机的磁盘空间

    1 准备工作 使用 df h 指令查看一下磁盘空间的使用情况 可以看到 xff0c 现在挂载的磁盘空间为40G xff0c 用了16G xff0c 还剩22G 下面开始扩展磁盘空间 2 编辑虚拟机设置 打开虚拟机 xff0c 找到待扩展的虚
  • 解决Android Studio 无法通过gradle 下载https://dl.google.com/android/repository/addons_list-3.xml 解决办法

    安卓gradle的时候 xff0c 会弹出来这样报错 Task prepareKotlinBuildScriptModel UP TO DATE IOException https dl google com android reposit
  • libGL error: MESA-LOADER: failed to open vmwgfx (search paths /usr/lib/x86_64-linux-gnu/dri)

    使用emulator use system libs 命令 Using the libstdc 43 43 so 6 that is available in your system instead of the one bundled w
  • Java内部类详解

    一 内部类基础 在Java中 xff0c 可以将一个类定义在另一个类里面或者一个方法里面 xff0c 这样的类称为内部类 广泛意义上的内部类一般来说包括这四种 xff1a 成员内部类 局部内部类 匿名内部类和静态内部类 下面就先来了解一下这
  • 使用Ubuntu18.04编译android8.1

    使用虚拟机中的Ubuntu18 04编译android8 1 1 软硬件要求 1 1 硬件 16G的内存 xff1b 200G的存储盘 1 2 软件 Ubuntu18 04 这样的软硬件要求并非必须 xff0c 但是经过测试这样的配置刚好能