Ubuntu 18.04 下编译 LineageOS 15 on 魅族16th 教程

自己整理的编译cm的大致步骤,英文能力不错的可以去lineage的官方wiki看看。
没有特别说明,所有的文件操作都在代码的根目录下执行。

0x0 安装adb和fastboot

sudo apt install adb fastboot
安装后执行adb devices可能提示有权限问题,自己百度下提示的错误解决即可。
 

0x1 环境搭建

先安装几个必要的组件,包括:

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

0x2 安装Repo和python/h2>

sudo apt install repo python

0x3 下载LineageOS源码

因为各种原因,推荐使用清华大学镜像源下载源码。官方地址是https://mirrors.tuna.tsinghua.edu.cn/help/lineageOS/
自己看下那个教程,很简单。按照教程init仓库后,可能还需要改个配置

打开.repo/manifest.xml
将https://android.googlesource.com改成https://aosp.tuna.tsinghua.edu.cn

然后再repo sync

3.下载机型配置

在项目源码目录下的device目录下,新建一个目录 meizu
然后在meizu 目录下同步2个仓库代码
git clone https://github.com/coderstory/android_device_meizu_16th.git 16th
git clone https://github.com/coderstory/android_device_meizu_sdm845-common.git sdm845

然后需要下载一个845机型的内核源码
源码目录下的kernel目录下新建目录meizu,然后再meizu目录下执行代码
git clone https://github.com/LineageOS/android_kernel_xiaomi_sdm845.git -b lineage-15.1 sdm845

项目还需要依赖一个android_packages_resources_devicesettings 也需要同步
在源码目录下的packages目录下新建目录resources,然后在resources目录下执行
git clone https://github.com/LineageOS/android_packages_resources_devicesettings .git -b lineage-15.1 devicesettings

当然这些东西都可以写到.repo/local_manifests/local_manifests.xml里面去,repo sync的时候会自动同步。格式差不多是这样

<?xml version="1.0" encoding="UTF-8"?>
<manifest>
        <remote  name="coderstory"
          fetch="https://github.com"
      review="review.lineageos.org" />
      <project name="coderstory/android_device_meizu_16th" path="device/meizu/16th" remote="coderstory" revision="lineage-16.0" />
      <project name="coderstory/android_device_meizu_sdm845-common" path="device/meizu/sdm845" remote="coderstory" revision="lineage-16.0" />
      <project name="LineageOS/android_kernel_xiaomi_sdm845" path="kernel/meizu/sdm845" remote="coderstory" revision="lineage-16.0" />
 <project name="LineageOS/android_packages_resources_devicesettings.git" path="packages/resources/devicesettings" remote="coderstory" revision="lineage-16.0" />
</manifest>

0x4 make vendor

make vendor主要是拉取官方系统的部分必要文件用于编译lineageos系统。
先确保手机能连adb
然后在源码根目录下执行 . build/envsetup.sh初始化环境
终端进入/device/meizu/16th目录下。执行
chmod 755 *.sh
./setup-makefiles.sh
./extract-files.sh

此时,device/vendor/meizu下会出现个16th的目录,如果没有则将sdm845改名为16th。

0x5 开启缓存

apt install ccache
export USE_CCACHE=1
ccache -M 50G

0x6 编译系统

接下来,需要初始化编译机型,执行
lunch ineage_16th-userdebug

然后执行编译命令 mka bacon


0x7 还原代码

瞎改代码炸了怎么办?执行下面的命令还原所有修改
repo forall -c git reset --hard

附录:
LineageOS 官方编译教程
https://wiki.lineageos.org/devices/kiwi/build
编译环境下常用命令解析
https://www.cnblogs.com/vincentcc-90/p/4615258.html?tdsourcetag=s_pctim_aiomsg
ccache介绍
https://blog.csdn.net/qq_27062249/article/details/53642444
指纹支付修复参考
https://github.com/LineageOS/android_device_xiaomi_sdm845-common/commit/c8bb263e5bffa309be815f2a2cf34df393a78380