编译Android系统使用的是Ubuntu20.04搭建Android10源码编译
这里使用的是目前最新的版本VMware Workstation Pro16 为例,官网下载地址为:Windows 虚拟机 | Workstation Pro | VMware | CN 选择试用版本
安装过程比较的简单,这里就详细介绍了。
这里使用的是20.04版本,官方下载地址为:Ubuntu系统下载 | Ubuntu
找到对应的Ubuntu版本下载就可以
1.在VM主页上选择创建新的虚拟机,如下图所示
2. 选择典型安装
3.在安装程序光盘映像文件里找到下载好的Ubuntu系统,如下图所示
4.填好用户信息
5.设置系统在物理机中的磁盘位置
6.设置磁盘的大小
磁盘的大小建议是300G,Android系统源码挺大的(当时下载Android10的源码将近100G),后续编译将近到200G左右,以防磁盘空间不够,造成Android系统编译失败的情况。
7.设置Ubuntu的内存和处理器
将内存设置成16G(内存建议设置成16G,如果太小了很容就会出现很对异常问题,如内存溢出等等,各种奇葩的问题) ,处理器为8核。此外需要注意的是,在处理器上,需要将虚拟化的VT打上勾,不然Android系统编译成功后,用emulator的模拟器指令无法启动Android模拟器。
点击完成,Ubuntu的系统就可以在VM上安装了
安装成功后的Ubuntu如下所示,至此,VM上安装Ubuntu20.04结束。
在下载Android源码前,需要安装编译依赖库和工具下载。
1.安装git
sudo apt-get install git
安装成功后,查看git版本
git --version
下载好git后,设置git账户
git config --global user.email "[email protected]"
git config --global user.name "xxxxx"
2.安装jdk
sudo apt-get install openjdk-8-jdk
3.配置PATH环境变量
mkdir ~/bin
echo "PATH=~/bin:\$PATH" >> ~/.bashrc
source ~/.bashrc
4.安装curl库
sudo apt-get install curl
5.下载repo并设置权限
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > ~/bin/repo
chmod a+x ~/bin/repo
6.安装python
sudo apt-get install python
查看python版本
python --version
如果有看到python的版本,即安装成功
1.创建Android源码目录:
mkdir source
cd source
mkdir android_10
cd android_10
2.设置repo的地址,这里使用的tanna源:
export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'
3.初始化仓库:
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest
4.制定Android版本并初始化:
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-10.0.0_r10
5.开始同步代码源:
repo sync
Android源码非常大,需要同步很长的时间,如果同步过程中有出现某个地方卡顿了很久,可以使用ctrl+z来中断同步,重新 repo sync来进行同步
1.安装依赖
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
上面安装依赖中会有两个地方会出现问题
(1) 安装 sudo apt-get install libesd0-dev 会报 Unable to locate package libesd0-dev 这个错
解决办法:
sudo gedit /etc/apt/sources.list //在行尾添加如下两行的内容
deb http://us.archive.ubuntu.com/ubuntu/ xenial main universe
deb-src http://us.archive.ubuntu.com/ubuntu/ xenial main universe
(2) 安装sudo apt-get install lib32ncurses5-dev可能报"lib32ncurses5-dev : Depends: libncurses5-dev (= 6.0+20160213-1ubuntu1) Unable to correct problems, you have held broken packages."
解决办法:
1.安装aptitude
sudo apt install aptitude
2.安装lib32ncurses5-de
需要注意的是,安装这个lib32ncurses5-de需要切换到root权限(第一次安装Ubuntu root密码是随机的,可以使用sudo passwd root)来输入或修改密码
sudo passwd root
在使用su 回车切换到root用户
su
在输入root的密码即可,root用户命令行最前面有一个#,即切换到超级用户,安装lib32ncurses5-de
aptitude install lib32ncurses5-dev
安装时,会提示你是否保持当前版本,先输入n,再回提示你是否降级,输入y即可
开始编译
source build/envsetup.sh
lunch 21 (X86版本)
make -j8
这里 -j8表示让8个线程参与编译,这个数字一般满足cpu内核数*2,可以通过cat /proc/cpuinfo来查看相关的cpu信息。
编译成功,如下所示
启动模拟器
emulator
成功运行,这个就是我们自己手动编译的Android源码。