手把手一步步实现 Ubuntu20.04编译Android10系统源码

1.前言

    编译Android系统使用的是Ubuntu20.04搭建Android10源码编译

2.详细步骤

   1.下载VMware Workstation Pro

    这里使用的是目前最新的版本VMware Workstation Pro16 为例,官网下载地址为:Windows 虚拟机 | Workstation Pro | VMware | CN 选择试用版本

 安装过程比较的简单,这里就详细介绍了。

    2.下载Ubuntu20.04

        这里使用的是20.04版本,官方下载地址为:Ubuntu系统下载 | Ubuntu

       找到对应的Ubuntu版本下载就可以

    3.在VM上安装Ubuntu20.04

       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结束。

 4.下载Android源码

     在下载Android源码前,需要安装编译依赖库和工具下载。

 1.安装git 

sudo apt-get install git

安装成功后,查看git版本

git --version

 出现git版本,即安装成功

 下载好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源码。

猜你喜欢

转载自blog.csdn.net/h5630/article/details/127715207