ubuntu-18.04.4 Android系统源码R(Android 11)下载及编译

继上一篇博客介绍了VMware Workstation15 配置ubuntu-18.04.4,这篇主要介绍安装后环境搭建,Android源码的下载与编译。小编当前下载的是当前最新的代码,是主干分支代码,20200301.tar,后又同步,查看系统版本是R系统、即Android 11(获取 Android 11)。解释 aosp(Android Open Source Project)。

windows查看ubuntu中的android源码 samba 共享ubuntu系统文件夹到Windows

环境配置

windows系统与Ubuntu虚拟机之间实现文件的相互复制粘贴

sudo apt-get autoremove open-vm-tools
sudo apt-get install open-vm-tools-desktop

成功后最好重启ubuntu
参考:
Windows和Ubuntu系统之间文件相互复制粘贴

Ubuntu vi 上下左右变ABCD问题解决方法
只要依次执行以下两个命令即可完美解决Ubuntu下vi编辑器方向键变字母的问题。

sudo apt-get remove vim-common
sudo apt-get install vim

参考:Ubuntu vi 上下左右变ABCD问题解决方法
Ubuntu:vim键盘上下左右按键变ABCD

设置 vi 显示行号

cd  /etc/vim
sudo vim  vimrc
set nu #在vimrc文件最后面加入下面内容就行

Linux下使用、设置Tab键,以及设置vim,让它显示行号
备份软件源

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

更新源

sudo vi /etc/apt/sources.list
#添加阿里源
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse

Ubuntu更新软件源
1.使用软件更新, 终端输入命令:

sudo apt update

完成之后继续输入命令:

sudo apt upgrade

Ubuntu18.04.3虚拟机安装步骤(图文教程,非常详细!!!)
Ubuntu更换软件源
2020年3月10日 22:33 yuxingjy 68827102

自己动手编译Android源码(超详细)
Ubuntu 18.04 配置android 源码开发/编译环境

安装 curl repo

sudo apt install repo
sudo apt install curl

安装配置git

sudo apt-get install git
git config --global user.email "[email protected]"
git config --global user.name "xxx"

如果报错:fatal: not in a git directory
则先执行

git init

再执行

git config –global user.email "[email protected]"

fatal: not in a git directory

配置PATH环境变量
添加~/bin 到环境变量PATH里面
从android的源码下载网站可以看到,是repo是建议我们在home下配置一个bin目录的,然后把bin目录path添加在配置文件中,笔者用的是虚拟机上的ubuntu,又想原本的操作系统可以看到下载好的源码,所以我是做了一个共享文件夹android,然后在共享文件夹中创建的bin目录,再把bin目录软连到home下。最后还是没有使用共享文件夹,担心不同的文件系统,会影响文件
具体命令如下:

mkdir ~/bin  # 1 。要么执行2语句,要么执行这条语句  
# ln -s /mnt/hgfs/android/bin/ ~   # 2
echo "PATH=~/bin:\$PATH" >> ~/.bashrc
source ~/.bashrc

此处创建软链接的效果等同于 主目录下有一个 bin/ 目录,并且该目录包含在PATH中
软连建立:ln -s 源文件 软链接文件
android是ubuntu共享windows下的文件夹,ln是创建了一个软链接

安装依赖库

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
sudo apt-get install libssl-dev

如果报错 ,有可能当时服务器网络不稳定,过一会重新执行
unable to locate package libesd0-dev

sudo vim /etc/apt/sources.list  //在行尾添加如下两行的内容
deb http://archive.ubuntu.com/ubuntu/ trusty main universe restricted multiverse

更新软件源并重新安装:

sudo apt-get update && sudo apt-get install libesd0-dev

ubuntu18.04无法安装libesd0-dev完美解决办法
下载 Repo 工具,并确保它可执行

curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
## 或者使用 curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repo
chmod a+x ~/bin/repo

将repo的URL切换至清华的源,将如下内容复制到你的~/.bashrc的最后一行

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

然后执行如下命令使其生效

source ~/.bashrc

下载代码

wget -c https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-20200301.tar  不要下载aosp-latest.tar的,最好下载离aosp-latest.tar最近打包的,因为aosp-latest.tar一直在更新,你下载过程中服务器一旦更新,下载的信息可能发生错误,导致下载进度归零
##wget -c https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar # 下载初始化包
tar xvf aosp-latest.tar # 解压得到的 AOSP 工程目录
cd AOSP   
repo sync # 正常同步一遍即可得到完整目录
# ../repo sync  小编后来使用的这个命令,意思是使用自己下载的repo命令,即bin/repo,当前所在的目录是aosp目录,所以用../repo sync

小编用ubuntu下载,一直没下载成功,从这周二就开始倒腾这个,时不时的和服务器就断了,不知为何,此时下载的是aosp-latest.tar。用迅雷也在下载,好在迅雷下载的稳定些
在这里插入图片描述
已经下了3天了。后来突然归零了。又从新下载了20190801号的tar包。
执行repo sync之后,我的ubuntu 提示了一句

warning: redirecting to https://aosp.tuna.tsinghua.edu.cn/platform/manifest/

然后一直不动,从昨天到现在有20个小时了,我一怒之下 安装ctrl + c,提示
aborted by user
在这里插入图片描述
Android 8.1.0 AOSP源码下载及编译
Another infinity
Android 9、10 -源码下载编译
Android源码 半小时下完Android系统源码
下载源代码
Android源代码下载与编译 - 2019
2020年3月11日 20:48 yuxinjy

Android 镜像使用帮助
Git Repo 镜像使用帮助
AOSP(Android) 镜像使用帮助
Index of /aosp-monthly/
代号、标记和细分版本号
Android 系统源码——下载到编译
自己动手编译Android源码(超详细)

很是倒腾,快弄一个周了,镜像下载也是特别慢,而且总是中断,不支持断点续传。镜像比较大
在这里插入图片描述
给root用户设置密码:

sudo passwd root

输入密码,并确认密码
切换到root用户进行操作

su root

2020年3月13日 13:27 yuxinjy sh

很遗憾,源码编译问题还没搞定,准确的来说是进行到了源码同步阶段
即repo sync,我下载的是20190801日的tar包,同步的时候老是出错,应该是网络问题吧,正在下载20200301日的tar包,因为下载aosp-latest.tar下载了两次,第一次到70%,归零了,第二次10% 又归零了,搞了10天了有,很头疼,继续吧
2020年3月18日 18:29 yuxingjiayuan sh
看看repo sync期间的错误
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
小编在同步过程中,时不时的就会卡着不动,也不知道是没反应了,还是一直在后台运行,只是界面没有更新。于是小编时不时的要 ctrl + c 一下,然后重新执行 …/repo sync命令,有时半夜也要起来看一下,看迅雷下载是不是还在继续,同步是不是还在执行。好在今天起来看到了 repo successfully的字样,从搭建虚拟机环境到现在前前后后已经快2周了,下载代码才基本搞定。为了避免同步过程中有丢失的文件,所以小编在提示repo successfully后又多同步了几次,还在同步。网上很多博客说的同步这一块很简单,不清楚他们是怎么做到的,小编在虚拟机上所有的操作,都在这个博客里进行了记录。希望对大家有所帮助,在你怀疑网络问题的时候(有墙),只能能做一步是一步吧,坚持,如果实在不行,也没办法。
2020年3月21日 7:31 yuxingjiay sh

编译

首先cd到应的源码目路,初始化编译环境。小编的目录是 aosp

source build/envsetup.sh

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

lunch aosp_arm-eng

在这里插入图片描述
aosp表示Android Open Source Project,arm64表示是使用arm64 cpu的设备,eng表示engineer版本,其直接开放了一些root等权限。当然直接使用lunch命令会列出所有可选的编译目标。
我们可通过如下命令来开始编译andriod源码

make -j4

这里的j4表示可以开启4个线程来参与编译源码,这里指定的线程数一般应该遵从cpu内核数的2倍这个规律,可以通过cat /proc/cpuinfo查看相关cpu信息。
Ubantu18.04环境下编译android源码
2020年3月23日11:12 ylxy sq
编译出错

============================================
[100% 55/55] out/soong/.bootstrap/bin/soong_build out/soong/build.ninja
FAILED: out/soong/build.ninja
out/soong/.bootstrap/bin/soong_build -t -l out/.module_paths/Android.bp.list -b out/soong -n out -d out/soong/build.ninja.d -globFile out/soong/.bootstrap/build-globs.ninja -o out/soong/build.ninja Android.bp
Killed
16:40:26 soong bootstrap failed with: exit status 1
FAILED: ninja fifo didn't finish after 5s
ninja: build stopped: subcommand failed.

在这里插入图片描述
由于没有具体报错信息,于是就网上搜索乱试一通

export LC_ALL=C

Ubuntu18.04编译Android源码报[run_soong_ui] Error 1错误
可以将export LC_ALL=C添加到~/.bashrc文件。LC_ALL=C 是为了去除所有本地化的设置,让命令能正确执行。
Ubuntu18.04下编译Android源码笔记

vim /etc/security/limits.conf 添加如下的行

# 解除服务器所有用户文件数 进程限制
*             soft       nofile      10240
*             hard       nofile      10240
*             soft       noproc      10240
*             hard       noproc      10240

保存后,再输入ulimit -n 10240回车即可生效。

sudo sh -c "ulimit -n 65535 && exec su $LOGNAME"

编译错误-build stopped: subcommand failed. 解决方法
Android soong build系统介绍

上面命令执行后有一些用处,之前编译了不到一个小时就报错了,现在编译到1个多小时后报错。最好看官方编译文档,但是没找到
准备换成 lunch aosp_arm64-eng 试试

Ubuntu 18.04(虚拟机)环境下编译Android 源码
Android 系统源码——下载到编译
自己动手编译Android源码(超详细)
2020年3月24日 21:26 ylxysq sh
由于没有官方文档做参考,同时网上也没有找到Android R系统源码的编译相关资料,也不清楚是不是代码没有同步完整的问题引起的,一直没编译成功,很耗费时间,故边搁置边编译。在同步代码的时候,这个platform,你把它当成即当前的aosp目录即可,platform后面的目录即是你aosp下的同步到本地的文件夹
在这里插入图片描述
2020年3月26日 10:21

猜你喜欢

转载自blog.csdn.net/w690333243/article/details/104779330