前言
之前在kvm虚拟机编译安卓,但是由于qemu虚拟磁盘的特性,最终磁盘文件大小已经大于设置的磁盘文件的最大容量,然后盘就满了
kvm虚拟机就直接暂停了,也没法使用其他Linux的livecd,一挂载也会暂停
使用各种办法挽救,速度忒慢,索性直接重建环境,比那些操作快,毕竟没什么重要文件
本篇算是一个笔记,给自己记录,方便以后使用
环境介绍
系统: ubuntu 24.04 LTS
更换源与更新系统
这个差不多都会吧,更换源在镜像站一般都有教程
推荐两个清华源和中科大源
更新系统:
1 | sudo apt update && sudo apt upgrade |
安装依赖
在这解释一下各个包,基础列表来自安卓官方文档1和安卓官方文档2
然后是做出的修改,修正找不到包的问题,包括git-core
,libncurses5
和lib32ncurses5-dev
,由于ubuntu已经占不到这些包了,所以替换成git
,libncurses6
和lib32ncurses-dev
然后是同步源码的工具repo
,不需要手动设置PATH来用,源里有,就是deb系的似乎更新比较慢,会报版本不是最新的警告,其他的发行版没见过有这个
ccache
这个在build/envsetup.sh
没定义或手动启用是不会自动开的,介于大多类原生的编译脚本里有,所以也带了
然后是构建内核需要用的的包libssl-dev
,解决编译内核时提示<openssl/bio.h>缺失的问题
git-lfs
这个在部分仓库需要用到,缺少可能会导致部分依赖它同步的文件打开后显示lfs信息。而不是本体文件
1 | sudo apt install git gnupg flex bison build-essential zip curl zlib1g-dev libc6-dev-i386 libncurses6 lib32ncurses-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig libssl-dev openjdk-8-jdk repo ccache git-lfs |
设置git信息
源码同步会提示要求设置git的信息,这里就不多说了,直接设置一下就行
1 | git config --global user.email 你的GITHUB邮箱(或其他?) |
初始化repo同步清单
首先,创建一个文件夹用来存放源码,然后进入这个文件夹,比如我这叫android
1 | mkdir android && cd android |
接着设置repo的下载地址,默认是被墙的谷歌源,我们可以替换为清华大学的git-repo源
1 | export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo' |
接着就是初始化repo,比如我这里同步risingOS
源码,可以执行这条命令。
这里https://github.com/RisingTechOSS/android
是清单地址,在前面加上https://mirror.ghproxy.com/
以使用国内加速,也可以自建
结尾加上--depth=1
设置克隆深度为1,减少不必要的空间占用
1 | repo init -u https://mirror.ghproxy.com/https://github.com/RisingTechOSS/android -b fourteen --git-lfs --depth=1 |
如果是AOSP官方源码或者lineages源码,可以使用国内镜像源,教程参考清华源文档
修改清单指向加速源
使用你喜欢的编辑器编辑.rpeo/manifests
文件夹,依次编辑default.xml
和存在的其他.xml
文件
对于https://github.com
的链接,在链接
最前面加上https://mirror.ghproxy.com/
对于https://android.googlesource.com
的链接,将链接
更换为AOSP镜像源
所要求的url
示例:
1 | <remote name="aosp" |
同步源码
这一步应该都会,因为大多数的清单里都会包含同步源码
此处为risingOS的清单里的同步命令
1 | repo sync -c --no-clone-bundle --optimized-fetch --prune --force-sync -j$(nproc --all) |
-j
后的线程数这个命令是默认按照CPU的核心数,但是按照镜像源的说法,比如这里的中科大源,请酌情设置线程数
由于硬盘 I/O 资源有限,Git 服务器每 IP 限制 5 个并发连接。 repo sync 命令默认使用 4 个并发连接,请勿使用 -j 参数增加并发连接数。
小脚本?
虽然设置完加速与镜像后,可以做到不开魔法
也可以顺利克隆,但是如果你的网络实在不好,容易失败
这里有个简单的bash脚本
可以帮助你自动重试,直到同步成功或手动退出
1 |
|
使用方法就是将脚本保存为repo_sync.sh
,然后chmod +x repo_sync.sh
,然后执行./repo_sync.sh
即可