ubuntu20.4编译AOSP(AndroidP android-9.0.0_r9)

目录

代码下载

安装初始化依赖工具

配置repo工具

配置git信息 

初始化仓库

配置编译环境

安装jdk

安装编译依赖

 编译

初始化编译环境

 选择编译目标

 编译源码

启动模拟器

windows和Linux协同工作

遇到的问题解决 

 安装依赖冲突解决

编译时找不到libncurses.so.5库

 启动模拟器失败

附:

引用:


代码下载

安装初始化依赖工具

$ sudo apt-get install curl python git

配置repo工具

$ mkdir ~/bin
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo

 repo的运行过程中会尝试访问google官方的git源更新自己,需要,可通过修改repo默认源,通过国内镜像源更新,具体操作为:在~/.bashrc文件里添加如下两行,保存退出,然后执行source ~/.bashrc更新环境变量

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

配置git信息 

    邮箱和姓名可以用真实的,也可以随便编一个

$ git config --global user.email "[email protected]"
$ git config --global user.name "Your Name"

初始化仓库

$ mkdir AOSP
$ cd AOSP
$ repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest

     初始化完成后,目录下会有一个隐藏文件夹.repo, 切换 到.repo/manifests目录,执行 git branch -a 可以看到所有分支,目前最新的版本已经到android-r-preview-4(androidR)了,再次执行

repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b  +分支名便可以下载对应安卓版本的源码,本文使用的P版本,如果下载最新版本代码可忽略,不过Q(10.0)版本之后编译工具和编译步骤可能会有差异,加上--depth=1 --platform=auto参数可以大幅度增加下载速度

$ repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-9.0.0_r9 --depth=1 --platform=auto

执行repo sync -c -j4下载代码,-c参数只下载当前分支, -j4启用4个线程下载,网上都说清华大学源服务器做了限制,最多只能4个线程,多了也没用,万一下载失败为了方便看失败原因,可以把同步日志保存到文件,更新失败的话可以查看sync.log

$ repo sync -c -j4 2>&1 | tee sync.log

repo init时加上--depth=1 参数,下载的代码每个git仓只包含一个commit信息,repo sync时加上-c参数,只下载当前分支相关的代码,二者结合起来,可以大大缩小整个工程的代码,我下载android-9.0.0_r9分支,只有50G,如果按照清华大学AOSP镜像源的方法,光是下载.repo压缩文件都需要接近78G,repo sync同步出代码将超过150M,commit信息和其它分支其实都是我们不需要的,浪费了很多硬盘资源


配置编译环境

在下载代码的同时,我们可以重新开一个终端,开始配置编译环境

安装jdk

sudo apt-get install openjdk-8-jdk

安装编译依赖

如果遇到问题看后面问题解决

sudo apt-get install -y 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 -y tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386
sudo apt-get install -y dpkg-dev libsdl1.2-dev libesd0-dev
sudo apt-get install -y git-core gnupg zip curl zlib1g-dev gcc-multilib
sudo apt-get install -y libc6-dev-i386 x11proto-core-dev libx11-dev
sudo apt-get install -y unzip m4 lib32z-dev ccache libssl-dev
sudo apt-get install -y lib32ncurses5-dev

 编译

初始化编译环境

source build/envsetup.sh

 选择编译目标

我选择的是aosp_arm64-eng,根据自己需求选择

lunch aosp_arm64-eng

 编译源码

-j后面的参数表示使用多少个线程编译,根据自己计算机cpu支持线程数来设定,可在设备管理器->处理器查看,下面有几个就是支持几个线程,我这边使用12个线程编译了1个多小时;如果编译失败可以查看buildlog

make -j12 2>&1 | tee build.log

接下便是漫长的等待 

启动模拟器

如果中途关闭了终端,需要重新执行source build/envsetup.sh 和lunch命令才能启动模拟器

$ emulator

windows和Linux协同工作

如果你的电脑装了代码编辑软件,不想在Linux上再装一套,又用不惯vim这类编辑软件,可以尝试将文件共享到windows上,在windows上编辑,在linux上调试,具体见ubuntu20.4安装samba

遇到的问题解决 

 安装依赖冲突解决

如果安装libesd0-dev时报错 ,可在/etc/apt/sources.list  中文件尾加入deb http://us.archive.ubuntu.com/ubuntu/ xenial main universe,然后执行sudo apt-get update更新,重新安装便能成功

 ubuntu20.4编译AOSP(AndroidP android-9.0.0_r9)_第1张图片

若安装过程中提示有冲突,多半是apt源有问题,版本不对,这个我也是现在才发现,网上好多博客的国内apt源都没有标明ubuntu版本,复制过来版本对不上的话安装软件时经常报冲突,建议去个镜像源找对应版本的apt源,如清华大学镜像源,或者先将能安装的装上,然后把源换为自带的源列表

ubuntu20.4编译AOSP(AndroidP android-9.0.0_r9)_第2张图片

对于桌面版,直接在源列表列表选择一个合适的,我使用的aliyun,速度也挺快的,或者点选择最佳服务器自动选择一个ubuntu20.4编译AOSP(AndroidP android-9.0.0_r9)_第3张图片

编译时找不到libncurses.so.5库

编译时报错:error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory,我这边直接sudo apt-get install libncurses* 暴力解决

sudo apt-get install libncurses* 

 启动模拟器失败

emulator: ERROR: x86_64 emulation currently requires hardware acceleration!

warning的报警无关紧要,导致起不来的是ERROR的打印,在网上搜了一下没找到解决办法,都是讲Android Studio启动模拟器失败的,看到一篇文章中说需要BIOS中打开硬件虚拟化,但是我windows上的模拟器和VM虚拟机都能正常使用,说明是开了的,无意间看到VM虚拟机里处理器有个虚拟化引擎的东西,抱着试一试的心态,勾选了虚拟化Intel VT-x/EPT和AMD-V/RVI(V)选项,启动虚拟机,source build/envsetup.sh 和lunch命令,接下来就能正常启动了,接线来就可以修改呢安卓源码,开启安卓 

ubuntu20.4编译AOSP(AndroidP android-9.0.0_r9)_第4张图片

见编译AOSP源码,安卓模拟器启动失败  


附:

ubuntu20.4LTS下载地址

http://releases.ubuntu.com/20.04/ubuntu-20.04-desktop-amd64.iso 桌面版

http://releases.ubuntu.com/20.04/ubuntu-20.04-live-server-amd64.iso 服务器版

其他版本详见 http://releases.ubuntu.com/20.04/

AOSP国内镜像地址

repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest 清华AOSP镜像源
repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest 中国科学技术大学AOSP镜像源

引用:

https://blog.csdn.net/m0_46702738/article/details/106059563

https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/

你可能感兴趣的:(aosp,编译构建)