编译LineageOS-20并刷入Pixel 2XL

编译LineageOS-20并刷入Pixel 2XL

2023-6-6 hongxi.zhu

一、编译LineageOS-20

1. 准备工作

1.1 安装platform-tools

从google下载对应的adb&fastboot工具安装包 [传送门],然后解压到家目录:

unzip platform-tools-latest-linux.zip -d ~

将adb&fastboot工具添加到系统PATH中, 这里是添加到~/.profile

# add Android SDK platform tools to path
if [ -d "$HOME/platform-tools" ] ; then
    PATH="$HOME/platform-tools:$PATH"
fi

然后记得运行source ~/.profile更新下系统环境变量。

1.2 安装必要的依赖

  • 通过sudo apt-get install安装以下的依赖
bc bison build-essential ccache curl flex g++-multilib gcc-multilib git git-lfs gnupg gperf imagemagick
lib32ncurses5-dev lib32readline-dev lib32z1-dev libelf-dev liblz4-tool libncurses5 libncurses5-dev
libsdl1.2-dev libssl-dev libxml2 libxml2-utils lzop pngcrush rsync
schedtool squashfs-tools xsltproc
zip zlib1g-dev libwxgtk3.0-dev git-lfs
  • JDK
    JDK不需要额外安装,源码带有JDK11, 同时系统也带有OpenJDK,可通过 java -version查看。
  • Python
    需要确保系统安装了Python3,高版本的Ubuntu默认就是Python3, 可通过python --version查看。

1.3 创建相关目录

  • 创建以下目录
mkdir -p ~/bin
mkdir -p ~/android/lineage

~/bin是用于存放repo这个可执行文件的地方,如果没有这个目录就需要创建。
~/android/lineage是存放我们源码文件的目录

  • ~/bin加到系统PATH路径中
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

然后记得运行source ~/.profile更新下系统环境变量。

1.4 下载repo可执行文件

curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo

1.5 配置

repo需要是通过Git的方式去拉取源码,所以我们这里需要配置Git的信息。

git config --global user.email "[email protected]"
git config --global user.name "hongxi.zhu"

2. 拉取源码

2.1 初始化仓库

cd ~/android/lineage
repo init -u https://github.com/LineageOS/android.git -b lineage-20.0 --git-lfs

2.2 同步源码

repo sync

这里线程数默认是4,如果加-j, 一定要小于8,推荐4~8, 因为LineageOS大部分是去拉AOSP的仓库,Google每个IP限制8个线程,超过就禁止连接,同步失败,由于时差,国内白天时,全球拉取的人数少,拉取速度快于晚上。

3. 编译源码

3.1 准备工作

代码同步结束还不能直接编译,需要拉取对应的device仓库kernel仓库设备闭源文件以及必需的其他模块

3.1.1 拉取Pixel 2XL的device仓库

Pixel 2XL的device仓库

cd ~/android/lineage/device/google/
git clone https://github.com/LineageOS/android_device_google_taimen.git taimen -b lineage-20

这里有个坑,因为Pixel 2XL(代号taimen)是从Pixel 2派生的,它们开发在Google内部有个共同代码叫wahoo, taimen很多文件都是引用了wahoo所以我们还需要拉取wahoodevice[仓库],否则编译将缺少很多文件。

cd ~/android/lineage/device/google/
git clone https://github.com/LineageOS/android_device_google_wahoo.git wahoo -b lineage-20
3.1.2 拉取Pixel 2XL的内核源码仓库

Pixel 2和Pixel 2XL都是使用wahoo的内核源码,所以需要直接拉取wahoo内核仓库

cd ~/android/lineage/kernel/google
git clone https://github.com/LineageOS/android_kernel_google_wahoo wahoo -b lineage-20
3.1.3 拉取Pixel 2XL的ElmyraService模块仓库

ElmyraService是Google更新的关于手势的开源仓库,lineage没有及时纳入到Pixel 2XL 的device更新,所以需要我们手动导入这个模块,也是一个坑点之一,仓库地址

cd ~/android/lineage/packages/apps
git clone https://github.com/LineageOS/android_packages_apps_ElmyraService ElmyraService -b lineage-20.0

注意这个仓库的分支和上面的不一样

3.1.4 拉取设备的闭源文件

Pixel 2XL Google也是有一些文件,处于vendor分区的,并不开源,我们需要从已经刷入相同Lineage 20的Pixel 2XL中通过adb pull拉取, 这里具体怎么拉取,拉取那几个文件Lineage已经帮我们写成了一个快捷脚本extract-files.sh, 使用方法:

  • 将官方的Lineage 20输入Pixel 2XL,刷入方法如下一节的 [刷入Pixel 2XL]
  • 将刷好的手机连接ADB到电脑,并打开adb root
cd ~/android/lineage/device/google/taimen
./extract-files.sh

拉取成功后,文件将会在~/android/lineage/vendor/google/taimen 目录下

3.2 编译

cd ~/android/lineage
source build/envsetup.sh
breakfast taimen
brunch taimen

二、刷入Pixel 2XL

1. 获取产物文件

无论是下载官方的文件还是自己编译的,需要烧录下面这几个文件:(如果是自编译在out目录下找到这几个文件)

产物 烧录方式
lineage-20.0-20230601-nightly-taimen-signed.zip recovery
boot.img fastboot
dtbo.img fastboot
vbmeta.img fastboot

2. 烧写

首先进入fastboot模式

adb reboot fastboot
fastboot flash boot boot.img
fastboot flash dtbo dtbo.img
fastboot flash vbmeta vbmeta.img

然后通过音量键下+电源键选中进入Recovery模式

  1. 从主页选择Factory reset -> Foramt data/factory reset进行data分区的数据擦除
  2. 从主页选择Apply update - > Apply from ADB
  3. ADB 开始烧录:
adb sideload lineage-20.0-20230601-nightly-taimen-signed.zip
  1. 上一步完成后从主页进行Reboot system now
  2. 等待重启即可完成烧写

参考:
https://wiki.lineageos.org/devices/taimen/build#create-the-directories
https://wiki.lineageos.org/devices/taimen/install
https://download.lineageos.org/devices/taimen/builds

猜你喜欢

转载自blog.csdn.net/qq_40731414/article/details/131072687