cyanogenmod(LineageOS)编译

本文主要说明编译一个可以在nexus 5上跑的cyanogenmod-12.1步骤。所以相关东西都是以这个为例子。

同步代码

配置repo工具环境

  1. 安装repo
apt-get install -y curl git
mkdir -p ~/bin/
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > ~/bin/repo
chmod a+x ~/bin/repo
ln -s  ~/bin/repo /bin/repo
  1. 设置镜像地址
#在~/.bashrc末尾添加
export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'

下载源码(此处请根据需要下载相应版本)

下载repo描述仓库(此处我是这么叫的)

repo init -u git://github.com/CyanogenMod/android.git -b cm-12.1
repo sync

修改 repo 描述符

找到remote标签配置,将骑配置为清华 AOSP 镜像地址:

  <remote  name="aosp"
           fetch="https://aosp.tuna.tsinghua.edu.cn/"
           review="android-review.googlesource.com"
           revision="refs/tags/android-5.1.1_r37" />

添加驱动与内核模块

这是比较重要的一步,如果没有这步,编译好的系统将无法进入。

mkdir local_manifests
touch local_manifests/lge.xml

lge.xml文件写入内容:

<?xml version="1.0" encoding="UTF-8"?>
<manifest>
  <project name="CyanogenMod/android_device_lge_hammerheadcaf" path="device/lge/hammerheadcaf" remote="github" />
  <project name="CyanogenMod/android_device_lge_hammerhead" path="device/lge/hammerhead" remote="github" />
  <project name="CyanogenMod/android_kernel_lge_hammerhead" path="kernel/lge/hammerhead" remote="github" />
  <project name="TheMuppets/proprietary_vendor_lge"  path="vendor/lge"  remote="github" />
</manifest>

同步代码

repo sync

此处需要一个比较长的时间。

编译代码

配置环境

此处我推荐使用我个人创建的 DOCKER 项目docker-aosp-zh 虚拟机或者真实物理机配置请参考:安卓源码(aosp)下载编译

开始编译

source build/envsetup.sh
breakfast hammerhead
croot
brunch hammerhead

最后我们获得一个 zip 包:cm-12.1-20180701-UNOFFICIAL-hammerhead.zip 编译过程遇到问题请参考环境配置中提到的文章安卓源码(aosp)下载编译

刷入机器

安装twrp(一个 recovery 镜像)

  1. 下载(此处我们下载twrp-3.2.1-1-hammerhead.img)
  2. 重启机器到bootloader模式
  3. 执行 recovery 刷写命令
fastboot flash recovery twrp-3.2.1-1-hammerhead.img

刷写系统

  1. 刷写完twrp,直接进入twrp模式
  2. 进行双清Wipe->Advanced Wipe->${全部打勾}->Swipe to Wipe
  3. 返回trwp最开始界面,点击Advanced->ADB Sideload,正确启动adb sideload连接
  4. 执行安装(假设此时已经在cm-12.1-20180701-UNOFFICIAL-hammerhead.zip的目录下)
adb sideload cm-12.1-20180701-UNOFFICIAL-hammerhead.zip

排错

bootloader 版本匹配错误

如果遇到 bootloader 相关的匹配版本错误请下载对应的bootloader刷入。刷入步骤如下:

  1. 进入bootloader模式
  2. 执行命令
fastboot flash bootloader bootloader-hammerhead-hhz12h.img

此处提供几个 bootloader 下载:
bootloader-hammerhead-hhz12h.img

参考文献

Build CyanogenMod 12 for Nexus 5
Build for hammerhead