banner
Hi my new friend!

ubuntu系统搭建安卓构建环境

Scroll down

前言

之前在kvm虚拟机编译安卓,但是由于qemu虚拟磁盘的特性,最终磁盘文件大小已经大于设置的磁盘文件的最大容量,然后盘就满了

kvm虚拟机就直接暂停了,也没法使用其他Linux的livecd,一挂载也会暂停

使用各种办法挽救,速度忒慢,索性直接重建环境,比那些操作快,毕竟没什么重要文件

本篇算是一个笔记,给自己记录,方便以后使用

环境介绍

系统: ubuntu 24.04 LTS

更换源与更新系统

这个差不多都会吧,更换源在镜像站一般都有教程
推荐两个清华源中科大源

更新系统:

1
sudo apt update && sudo apt upgrade

安装依赖

在这解释一下各个包,基础列表来自安卓官方文档1安卓官方文档2

然后是做出的修改,修正找不到包的问题,包括git-corelibncurses5lib32ncurses5-dev,由于ubuntu已经占不到这些包了,所以替换成gitlibncurses6lib32ncurses-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 libelf-dev

设置git信息

源码同步会提示要求设置git的信息,这里就不多说了,直接设置一下就行

1
2
git config --global user.email 你的GITHUB邮箱(或其他?)
git config --global user.name 你的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/RisingOS-Revived/android是清单地址,在前面加上https://mirror.ghproxy.com/以使用国内加速,也可以自建

结尾加上--depth=1设置克隆深度为1,减少不必要的空间占用

1
repo init -u https://mirror.ghproxy.com/https://github.com/RisingOS-Revived/android -b fourteen --git-lfs --depth=1

如果是AOSP官方源码或者lineages源码,可以使用国内镜像源,教程参考清华源文档

可用的源推荐清华源中科大源,不同之处就是替换url的问题

修改清单指向加速源

使用你喜欢的编辑器编辑.repo/manifests文件夹,依次编辑default.xml和存在的其他.xml文件

对于https://github.com的链接,在链接最前面加上https://mirror.ghproxy.com/

对于https://android.googlesource.com的链接,将链接更换为AOSP镜像源所要求的url

示例:

1
2
3
4
5
6
7
8
9
10
<remote  name="aosp"
fetch="https://mirrors.ustc.edu.cn/aosp"/>

...

<remote name="rising"
fetch="https://mirror.ghproxy.com/https://github.com/RisingOS-Revived/"
sync-c="true"
sync-j="4"
revision="refs/heads/fifteen" />

同步源码

这一步应该都会,因为大多数的清单里都会包含同步源码

此处为risingOS的清单里的同步命令

1
repo sync -c --no-clone-bundle --optimized-fetch --prune --force-sync -j$(nproc --all)

-j后的线程数这个命令是默认按照CPU的核心数,但是按照镜像源的说法,比如这里的中科大源,请酌情设置线程数

WARNING

由于硬盘 I/O 资源有限,Git 服务器每 IP 限制 5 个并发连接。 repo sync 命令默认使用 4 个并发连接,请勿使用 -j 参数增加并发连接数。

小脚本?

虽然设置完加速与镜像后,可以做到不开魔法也可以顺利克隆,但是如果你的网络实在不好,容易失败

这里有个简单的bash脚本可以帮助你自动重试,直到同步成功或手动退出

1
2
3
4
5
6
7
8
9
10
11
12
13
#!/bin/bash

echo "======start repo sync======"

# 执行 repo sync 命令
repo sync

# 使用 while 循环检查命令的退出状态
while [ $? -eq 1 ]; do
echo "======sync failed, re-sync again======"
sleep 3
repo sync
done

使用方法就是将脚本保存为repo_sync.sh,然后chmod +x repo_sync.sh,然后执行./repo_sync.sh即可

其他文章
目录导航 置顶
  1. 1. 前言
  2. 2. 环境介绍
  3. 3. 更换源与更新系统
  4. 4. 安装依赖
  5. 5. 设置git信息
  6. 6. 初始化repo同步清单
  7. 7. 修改清单指向加速源
  8. 8. 同步源码
  9. 9. 小脚本?
请输入关键词进行搜索