首页 OnePlus 7T LineageOS 编译向导
文章
取消

OnePlus 7T LineageOS 编译向导

OnePlus 7T LineageOS 编译向导

安装编译所需依赖

1
sudo apt install bc bison build-essential ccache curl flex g++-multilib gcc-multilib git gnupg gperf imagemagick lib32ncurses5-dev lib32readline-dev lib32z1-dev liblz4-tool libncurses5 libncurses5-dev libsdl1.2-dev libssl-dev libxml2 libxml2-utils lzop pngcrush rsync schedtool squashfs-tools xsltproc zip zlib1g-dev openjdk-9-jdk git vim repo

如果您的 Ubuntu 版本低于 20.04 则还需要安装 libwxgtk3.0-dev

如果您的 Ubuntu 版本低于 16.04 则还需要安装 libwxgtk2.8-dev

创建工作区

这里的工作区指 LineageOS 源码的存放文件夹

1
mkdir ~/lineage

同步 LineageOS 源码

1
2
3
4
5
6
7
8
9
10
11
12
# 进入工作区
cd ~/lineage

# 配置 git 
git config --global user.email "您的邮箱"
git config --global user.name "您的名字"

# 使用 repo 初始化仓库
repo init -u https://github.com/LineageOS/android.git -b lineage-17.1

# 同步源码
repo sync

配置设备树 (device tree)

由于 LineageOS 官方并未支持 OnePlus 7T (hotdogb) 因此我们需要手动配置设备树

查找可用设备树

前往 GitHub 进行搜索 device_oneplus_hotdogb

这里的 device 指设备树 oneplus 指设备制造商 hotdogb 指机型代号

我选择了该设备树进行编译 (AOSiP-Devices/device_oneplus_hotdogb)[https://github.com/AOSiP-Devices/device_oneplus_hotdogb]

发现该仓库存在 lineage-17.1 分支 便直接 clone 到了本地

1
2
3
4
5
6
7
8
9
10
11
12
# 进入到设备树文件夹
cd  ~/lineage/device

# 创建文件夹,以存放 OnePlus 机型的设备树
mkdir oneplus
cd oneplus

# clone 远程设备树到本地
git clone https://github.com/AOSiP-Devices/device_oneplus_hotdogb -b lineage-17.1

# 重命名 clone 下来的设备树文件夹名
mv device_oneplus_hotdogb hotdogb

检查设备树所需依赖

检查设备树内的 .dependencies 文件,发现其依赖于 device_oneplus_sm8150-common

便前往LineageOS 的官方 GitHub 仓库获取

(LineageOS/android_device_oneplus_sm8150-common)[https://github.com/LineageOS/android_device_oneplus_sm8150-common]

1
2
3
4
5
6
7
8
# 进入到 OnePlus 设备树文件夹
cd ~/lineage/device/oneplus

# clone 设备树所需依赖
git clone https://github.com/LineageOS/android_device_oneplus_sm8150-common -b lineage-17.1

# 重命名 clone 下来的通用树文件夹名
mv android_device_oneplus_sm8150-common sm8150-common

检查 sm8150 通用树所需依赖

检查通用树内的 .dependencies 文件,发现其依赖于 android_kernel_oneplus_sm8150android_device_oneplus_common

便前往LineageOS 的官方 GitHub 仓库获取

(LineageOS/android_kernel_oneplus_sm8150)[https://github.com/LineageOS/android_kernel_oneplus_sm8150]

(LineageOS/android_device_oneplus_common)[https://github.com/LineageOS/android_device_oneplus_common]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 进入内核树配置文件夹
cd ~/lineage/kernel

# 创建文件夹,以存放 OnePlus 机型的内核树
mkdir oneplus
cd oneplus

# clone 远程内核树到本地
git clone https://github.com/LineageOS/android_kernel_oneplus_sm8150 -b lineage-17.1

# 重命名 clone 下来的内核树文件夹名
mv android_kernel_oneplus_sm8150 sm8150

# 进入到 OnePlus 设备树文件夹
cd ~/lineage/device/oneplus

# clone 远程通用树到本地
git clone https://github.com/LineageOS/android_device_oneplus_common -b lineage-17.1

# 重命名 clone 下来的通用树文件夹名
mv android_device_oneplus_common common

配置要使用的内核配置文件

由于我第一次编译时报错失败,给出的错误提示是找不到预编译内核 因此我们需要配置设备树,让其使用内核源码编译内核

1
2
# 使用 vim 编辑配置文件
vim ~/lineage/device/oneplus/hotdogb/BoardConfig.mk

然后将文件中的

1
2
PRODUCT_COPY_FILES += $(DEVICE_PATH)-kernel/kernel:kernel
BOARD_KERNEL_CMDLINE += androidboot.selinux=permissive

替换成

1
TARGET_KERNEL_CONFIG := vendor/sm8150-perf_defconfig

然后使用 :wq 保存

配置 Vendor Tree

1
2
3
4
5
6
7
8
# 进入 Vendor Tree 文件夹
cd ~/lineage/vendor

# clone OnePlus 设备 Vendor Tree
git clone https://github.com/AOSiP-Devices/vendor_oneplus -b ten

# 重命名 clone 下来的 Vendor Tree 文件夹名
mv vendor_oneplus oneplus

开始编译

1
2
3
4
5
6
7
8
9
10
11
# 进入 LineageOS 源码所在文件夹
cd ~/lineage

# 初始化编译环境
. build/envsetup.sh

# 初始化设备
lunch lineage_hotdogb-userdebug

# 开始编译
mka bacon
本文由作者按照 CC BY 4.0 进行授权

Magisk 食用手册

Redmi Note 4G Available ROM list

Comments powered by Disqus.