准备工作
一台服务器,要求如下:
- 一个 x86_64 架构的 CPU,性能越强越好。
- 至少 16G 运行内存。
- 有至少 200G 的空闲磁盘空间。
- 有 Git 基本常识。
开始(以使用 Ubuntu 20.04 编译 LineageOS 18.1 为例)
安装编译 Android 所用到的软件包:
apt-get update && apt-get upgrade -y apt-get install -y openjdk-8-jdk git gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses-dev libncurses5 x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip bc imagemagick ccache schedtool libssl-dev jq patchelf python-is-python3
设置 Git 信息。
git config --global user.name "在此处替换成你的名字" git config --global user.email "在此处替换成你的邮箱"
下载 Repo
mkdir ~/.bin PATH=~/.bin:$PATH curl https://storage.googleapis.com/git-repo-downloads/repo > ~/.bin/repo chmod +x ~/.bin/repo
如果你要经常使用,可以在 Shell 的启动文件(例如 Bash 的启动文件就是 ~/.bashrc)中加入
export PATH=~/.bin:$PATH
以将其添加到 PATH 环境变量。建立一个文件夹并进入。
mkdir LineageOS && cd LineageOS
使用 LineageOS 的树初始化本地仓库
repo init --no-clone-bundle -u git://github.com/LineageOS/android.git -b lineage-18.1
如果你的网络状况不佳或只想编译 ROM,请在上面的命令后面加入
--depth=1
参数来仅拉取一层提交历史。开始同步源代码。
repo sync -c -j$(nproc --all) --force-sync --no-clone-bundle --no-tags --optimized-fetch --prune
开始构建。
加载编译环境:source build/envsetup.sh
接下来分为三种情况:
- 有官方维护:
brunch <设备代号>
即可。 无官方维护,但已有非官方源码:
- 去将编译需要用的源码(device,kernel,vendor)从 Git 托管代码站 Clone 到相应位置(一般是
<device/kernel/vendor>/设备厂商名/设备代号
)。 - 使用
brunch <设备代号>
命令开始编译。
- 去将编译需要用的源码(device,kernel,vendor)从 Git 托管代码站 Clone 到相应位置(一般是
无官方维护,且无非官方源码,但是有其他自定义 ROM 的源码:
- 去将编译需要用的源码(device,kernel,vendor)从 Git 托管代码站 Clone 到相应位置(一般是
<device/kernel/vendor>/设备厂商名/设备代号
)。 - 在此基础上作 ify(参考这里)。
- 使用
brunch <设备代号>
命令开始编译。
- 去将编译需要用的源码(device,kernel,vendor)从 Git 托管代码站 Clone 到相应位置(一般是
- 编译完成
编译完成后,你可以在out/target/product/<设备代号>
下找到你编译出来的刷机包,刷入即可。
注
- 不要使用任何没有名誉的开发者的源码。
- 建议使用第三方 ROM 官方设备仓库的源码。