ubuntu20.4编译AOSP安卓源码(AndroidP android-9.0.0_r9)

目录

代码下载

安装初始化依赖工具

配置repo工具

配置git信息 

初始化仓库

配置编译环境

安装jdk

安装编译依赖

 编译

初始化编译环境

 选择编译目标

 编译源码

启动模拟器

windows和Linux协同工作

遇到的问题解决 

 安装依赖冲突解决

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

 启动模拟器失败

附:

ubuntu20.4LTS下载地址

AOSP国内镜像地址

后续使用hyper-V遇到的问题

清华大学ubuntu镜像源报错

repo init 报错

引用:



代码下载

安装初始化依赖工具

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 "you@example.com"
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同步出代码将超过150G,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更新,重新安装便能成功

 

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

对于桌面版,直接在源列表列表选择一个合适的,我使用的aliyun,速度也挺快的,或者点选择最佳服务器自动选择一个

编译时找不到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* 暴力解决

如果依赖报错,将apt源换回ubuntu官网默认源

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命令,就能正常启动了,接下来就可以修改你的安卓源码,开启安卓之旅了 

编译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镜像源

后续使用hyper-V遇到的问题

    第一次使用的是VM虚拟机,后续尝试使用Hyper-V虚拟机遇到了一些其他问题

清华大学ubuntu镜像源报错

    使用清华大学ubuntu镜像源时,update报错,无法正常安装软件包,后来使用了阿里巴巴镜像源就没问题了

repo init 报错

fatal: 无法访问 'https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/':server certificate verification failed. CAfile: none CRLfile: none
repo: error: "git" failed with exit status 128
  cwd: /home/xxx/workstation/AOSP/android-6.0.1_r59/.repo/repo
  cmd: ['git', 'fetch', '--quiet', '--progress', 'origin', '+refs/heads/*:refs/remotes/origin/*', '+refs/tags/*:refs/tags/*']
fatal: cloning the git-repo repository failed, will remove '.repo/repo

解决办法:

git config --global http.sslverify false
git config --global https.sslverify false

引用:

在ubuntu20.04下配置android P源码编译环境_m0_46702738的博客-CSDN博客_ubuntu20 编译android

AOSP | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

  • 9
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值