赞
踩
目录
sudo apt-get install curl python git
- 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 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信息和其它分支其实都是我们不需要的,浪费了很多硬盘资源
在下载代码的同时,我们可以重新开一个终端,开始配置编译环境
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
如果你的电脑装了代码编辑软件,不想在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,速度也挺快的,或者点选择最佳服务器自动选择一个
编译时报错: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命令,就能正常启动了,接下来就可以修改你的安卓源码,开启安卓之旅了
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/
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest
清华AOSP镜像源repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest
中国科学技术大学AOSP镜像源
第一次使用的是VM虚拟机,后续尝试使用Hyper-V虚拟机遇到了一些其他问题
使用清华大学ubuntu镜像源时,update报错,无法正常安装软件包,后来使用了阿里巴巴镜像源就没问题了
- 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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。