环境配置
VMware
点击进入VMware官网的下载地址,下载步骤网上很多,不再赘述
ubuntu
点击进入ubuntu官网的下载地址,编译Android系统需要在ubuntu虚拟机环境下,点击下载选择桌面版(官网会更新,可能页面不一致)
进入旧版本的选择界面
选择18.04版本,如果是新手,最好按照步骤下载这个版本
下载ubuntu-18.04.5-desktop-amd64.iso
虚拟机安装
创建OS文件夹存放上面下载的镜像,VM文件夹存放虚拟机,磁盘需有200GB空间
新建虚拟机,一直下一步,直到下图选择刚下载的iso文件
一直下一步,直到创建用户,全名指的是电脑名,用户名是敲命令时的用户,用户名需小写,需记住密码,安装完需要密码登录
一直下一步,直到选择虚拟机位置,这里选择刚刚创建的VM文件夹
一直下一步,直到选择处理器数量,觉得自己机器比较老可选择2*2
一直下一步,直到选择虚拟机内存,推荐为电脑内存的一半
一直下一步,直到选择磁盘容量,前面已经说了要200G
一直下一步到完成,等待安装,安装完成后输入刚刚配置的密码进入linux系统
源码下载
本步骤在本文发布时可成功下载,并不保证以后可以使用,最好跟着步骤连同报错一起走一遍,如出现不一样的错误请自行百度,跳过新系统的开机向导和更新提示,Crtl+Alt+t开启终端,或右键open terminal
下面代码复制到终端运行,卸载并重装vim,避免上下左右键变成ABCD
sudo apt-get remove vim-common
sudo apt-get install vim
下面代码复制到终端运行,安装各种软件包,需输入密码,并选择y,若出错重复此步骤,它会自动在上次出错的位置继续安装
sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 libncurses5-dev lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig
下面代码复制到终端运行,修改/etc/apt/sources.list
sudo vi /etc/apt/sources.list
将下面的内容复制到里面保存,这是ubuntu国内镜像的源,用于加速软件的下载
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
下面代码复制到终端运行,更新上面的下载源
sudo apt-get update
下面代码复制到终端运行,安装python2和python3
sudo apt-get install python
sudo apt-get install python3
下面代码复制到终端运行,在~创建bin并添加将其到环境变量
mkdir ~/bin
PATH=~/bin:$PATH
下面代码复制到终端运行,在~/bin/repo下载repo并修改其权限
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
下面代码复制到终端运行,创建存放代码的文件夹
mkdir android5.1
下面代码复制到终端运行,初始化repo仓库,注意版本是android-5.1.1_r38
cd android5.1
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-5.1.1_r38
报错如下
下面代码复制到终端运行,修改~/.bashrc
vi ~/.bashrc
将下面的内容复制到里面保存
export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'
退出并重进终端,下面代码复制到终端运行,再次初始化repo仓库
cd android5.1
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-5.1.1_r38
报错如下
下面代码复制到终端运行,再次设置环境变量
PATH=~/bin:$PATH
下面代码复制到终端运行,再次初始化repo仓库,此时在~/android5.1下
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-5.1.1_r38
报错如下
下面代码复制到终端运行,直接运行提示的内容,这里的email和用户名没啥用
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
下面代码复制到终端运行,再次初始化repo仓库,选择y
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-5.1.1_r38
下面代码复制到终端运行,拉取代码,此时在~/android5.1下,这个过程相当长,最好晚上下载,电脑不断电,若中断则重复此步骤
repo sync
报错如下
下面代码复制到终端运行,清理所有项目的缓存
repo forall -c git clean -fdx
下面代码复制到终端运行,重新拉取代码
repo sync
下载完成,界面如下
大小如下,若大小已经远超这个,则是下载出错了,重新下载
源码编译
下面代码复制到终端运行,初始化环境,此时在~/android5.1下
source build/envsetup.sh
下面代码复制到终端运行,选择构建目标,这里选择5
lunch
下面代码复制到终端运行,编译源代码
make
报错如下,编译需要下载1.7.x版本的jdk
下面代码复制到终端运行,创建~/devTools存放JDK
mkdir ~/devTools
由于这个版本的Ubuntu不能通过命令下载JDK7,只好在windows中下载好,再通过Vmware tools放到linux下(直接拖到里面)
下面代码复制到终端运行,解压压缩包
cd ~/devTools
tar -xvf jdk-7u80-linux-x64.tar.gz
下面代码复制到终端运行,修改~/ .profile配置JAVA环境变量
cd ~
vi .profile
将下面的内容复制到里面保存
export JAVA_HOME=/home/aosp/devTools/jdk1.7.0_80
export PATH=$PATH:$JAVA_HOME/bin
下面代码复制到终端运行,更新.profile,输入java -version有输出即表示配置成功
source .profile
java -version
下面代码复制到终端运行,再次编译源代码,如果关闭并重开了终端,则需要重新source build/envsetup.sh和lunch
cd android5.1
make
报错如下,提示需要的是OpenJDK,而刚刚解压的OracleJDK
下面代码复制到终端运行,修改build/core/main.mk
vi build/core/main.mk
将其中的require_openjdk改为false
下面代码复制到终端运行,再次编译源代码,如果关闭并重开了终端,则需要重新source build/envsetup.sh和lunch
make
报错如下
下面代码复制到终端运行,修改build/envsetup.sh
vi build/envsetup.sh
将下面的内容复制到里面保存
export LC_ALL=C
下面代码复制到终端运行,再次编译源代码,修改envsetup.sh后需要重新source
source build/envsetup.sh
lunch
make
报错如下
下面代码复制到终端运行,按照提示更新api
make update-api
下面代码复制到终端运行,再次编译源代码,如果关闭并重开了终端,则需要重新source build/envsetup.sh和lunch
make
报错如下
下面代码复制到终端运行,修改build/core/clang/HOST_x86_common.mk
vi build/core/clang/HOST_x86_common.mk
将下面的内容复制到下图位置保存
-B$($(clang_2nd_arch_prefix)HOST_TOOLCHAIN_FOR_CLANG)/x86_64-linux/bin \
下面代码复制到终端运行,先用make clean删掉/out,再编译
make clean
make
报错如下
下面代码复制到终端运行,安装gperf
sudo apt-get install gperf
下面代码复制到终端运行,再次编译源代码,如果关闭并重开了终端,则需要重新source build/envsetup.sh和lunch
make
终于编译成功,界面如下
运行模拟器
下面代码复制到终端运行,运行模拟器,如果关闭并重开了终端,则需要重新source build/envsetup.sh和lunch
emulator
报错如下
下面代码复制到终端运行,安装kvm
sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils
下面代码复制到终端运行,查看是否安装成功
kvm-ok
将虚拟机关机,进入下图位置打开虚拟化引擎
下面代码复制到终端运行,运行模拟器,关机后要重新配置环境
source build/envsetup.sh
lunch
emulator
报错如下
下面代码复制到终端运行,将当前用户aosp加入kvm用户组
sudo usermod -a -G kvm aosp
下面代码复制到终端运行,创建rules
sudo gedit /etc/udev/rules.d/60-qemu-kvm.rules
将下面的内容复制到里面保存
KERNEL=="kvm", GROUP="kvm", MODE="0660"
下面代码复制到终端运行,需要重启虚拟器再运行命令
source build/envsetup.sh
lunch
emulator
模拟器启动完成,界面如下