本文主要说明编译一个可以在nexus 5上跑的cyanogenmod-12.1步骤。所以相关东西都是以这个为例子。
同步代码
配置repo工具环境
- 安装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
- 设置镜像地址
#在~/.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 镜像)
- 下载(此处我们下载twrp-3.2.1-1-hammerhead.img)
- 重启机器到bootloader模式
- 执行 recovery 刷写命令
fastboot flash recovery twrp-3.2.1-1-hammerhead.img
刷写系统
- 刷写完twrp,直接进入twrp模式
- 进行双清Wipe->Advanced Wipe->${全部打勾}->Swipe to Wipe
- 返回trwp最开始界面,点击Advanced->ADB Sideload,正确启动adb sideload连接
- 执行安装(假设此时已经在cm-12.1-20180701-UNOFFICIAL-hammerhead.zip的目录下)
adb sideload cm-12.1-20180701-UNOFFICIAL-hammerhead.zip
排错
bootloader 版本匹配错误
如果遇到 bootloader 相关的匹配版本错误请下载对应的bootloader刷入。刷入步骤如下:
- 进入bootloader模式
- 执行命令
fastboot flash bootloader bootloader-hammerhead-hhz12h.img
此处提供几个 bootloader 下载:
bootloader-hammerhead-hhz12h.img