IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 使用Ubuntu18.04编译android8.1 -> 正文阅读

[系统运维]使用Ubuntu18.04编译android8.1

使用虚拟机中的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 https://aosp.tuna.tsinghua.edu.cn/platform/manifest

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

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

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

repo init -u https://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

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

?

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-05-09 13:09:20  更:2022-05-09 13:10:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 18:26:58-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码