为已有第三方适配的 CyanogenMod 机型编译卡刷 zip 包,以 LegacyXperia Sony LT18i 为例

更新

此文章已经过时,但部分章节可被参考

LegacyXperia官方已经放出LT18i等机型的包,下载地址: LegacyXperia

前言

同学叫我帮忙折腾他的SONY LT18i…刚好寒假有空,就折腾吧
从LegacyXperia的Github上可以看到,LegacyXperia给2011年那堆索尼机型做的CM13适配看起来弄得差不多了,然而官方还没有放包,那就自己编译吧,刚好LegacyXperia也有放出编译教程
但 LegacyXperia 与官方的CyanogenMod还是有一些操作方面的差异,查了很久没有一篇能一路顺利做下来的教程,折腾了几下自己搞定了,就自己写一篇出来造福人类
嗯…总体来说就是下面这四篇教程的合体…
顺便给网络做了点奇怪的设置
{All 2011}[GUIDE][DEV] How to build CyanogenMod 12.1
How To Build CyanogenMod For Sony Ericsson Xperia Mini (“smultron”)
Android 镜像使用帮助 [LUG@USTC]
清华大学 TUNA 镜像源 | Tsinghua Open Source Mirror

准备工作

  • 一台第三方适配好了CM的手机,这里用我同学的SONY LT18i示范,编译已经被CM官方适配的机型并不在本篇教程的讨论范围内
  • Ubuntu 14.04 LTS amd64,这篇教程是在Ubuntu 14.04 LTS上实践过然后写出来的
  • 暂时不要使用Ubuntu 16.04 LTS,会出现很多奇怪的小问题
  • 200G的硬盘空间,CM官方貌似是这么说的…
  • 一块好的大容量SSD用作Ubuntu 14.04 LTS的系统盘,能大幅缩短编译所需时间
  • 运行内存最好4GB以上
  • 如果你没有最基本的Debian系操作系统(这里是Ubuntu)使用经验的话…不用看下去了…
  • 我是在root下操作的,反正整个系统都是用来干这破事…安全性还是没什么需求的,越方便越好吧
  • 为什么用中科大源而不是清华TUNA源呢?中科大源在我的环境中貌似网速比较快…

开始

检查软件包更新,这两条动工前必干的你们都知道吧…

apt-get update
apt-get upgrade

安装CyanogenMod编译所需要的东西

apt-get install bison build-essential curl flex git gnupg gperf libesd0-dev liblz4-tool libncurses5-dev libsdl1.2-dev libwxgtk2.8-dev libxml2 libxml2-utils lzop openjdk-7-jdk openjdk-7-jre pngcrush schedtool squashfs-tools xsltproc zip zlib1g-dev g++-multilib gcc-multilib lib32ncurses5-dev lib32readline-gplv2-dev lib32z1-dev

创建工作目录,按自己的需求来改吧,没啥特殊需求的直接像我这样也行

mkdir -p ./android/cm

下载repo

这里用了中科大源来解决Google官方源被墙的问题
这里吐槽一下…如果没有这些破事,效率应该能提高很多吧

apt-get install phablet-tools
curl https://storage-googleapis.lug.ustc.edu.cn/git-repo-downloads/repo > /usr/bin/repo

这个repo已经修改好的了,如果你用自己下载的repo,可以编辑/usr/bin/repo,把差不多最上面的

REPO_URL = 'https://gerrit.googlesource.com/git-repo'

改为

REPO_URL = 'https://gerrit-googlesource.lug.ustc.edu.cn/git-repo'

进入目录,并初始化,后面那个cm-13.0大家随机应变,跟适配源码相符合就好,别想着用12.1的适配源码编译13.0了

cd ./android/cm/
repo init -u git://github.com/CyanogenMod/android.git -b cm-13.0

接着修改manifest让原本用的Google源变成国内的中科大镜像源,实现愉快源码拉取
编辑
./android/cm/.repo/manifest.xml
把差不多最上面的

fetch="https://android.googlesource.com"

改为

fetch="git://mirrors.ustc.edu.cn/aosp/"  

下载机型的manifest文件
这个文件功能很多,不细说,请自行查阅CyanogenMod的WIKI
这个文件不是每个适配版本都有的,看ROMer有没有提供
ROMer 没有给出这个文件?直接repo sync同步好源码,把你的机型的device,vendor,kernel等源码下载下来放进相应目录里,试试能不能成功编译出来
这里就下载LegacyXperia给出了的

mkdir -p ./android/cm/.repo/local_manifests
curl https://raw.githubusercontent.com/LegacyXperia/local_manifests/cm-13.0/semc.xml > ./android/cm/.repo/local_manifests/semc.xml

好了,同步源码
这里需要很长时间,几十GB的源码,网速没问题,运气不错的话,晚上睡觉前开始同步,睡醒就好了
中科大源的网速是没问题的,能跑满我的百兆电信网,就看Github那边了…
在repo里,-j的意思是并发连接数,在这里中科大源最多只能有五个并发连接,所以只能-j5

repo sync -j5

下载更新
需要注意的是,这一步是 LegacyXperia 独有的,其他机型不要照抄,请自行查看你使用的机型的编译说明文档里有没有这样的特殊说明

. build/envsetup.sh
ln -s vendor/extra/updates.sh updates.sh
./updates.sh

初始化编译环境和指定机型,这里的anzu就是LT18i的代号,ROMer应该会说的,没有的话在同步下来的device里能找到

cd ~/android/cm
. build/envsetup.sh
breakfast anzu

开始编译

brunch anzu

我用的是VMware Workstation 10,I5 760超4Ghz分配4个核心,分配5GB内存,希捷老双碟1T分配200G作为系统盘,编译了两个半小时…最重要的是编译的时候卡成狗,windows下都根本不能用…所以还是睡觉前开始编译吧
如果编译成功了的话,你会看到一条类似这样的输出

~/android/system/out/target/product/smultron/cm-13.0-日期-UNOFFICIAL-LegacyXperia-anzu.zip

还有编译所用的时间


好了,去上面那个目录里找你亲手编译出来的ROM包,并刷进去体验吧

chevron_left
chevron_right

Leave a comment

您的电子邮箱地址不会被公开。 必填项已用 * 标注

Comment
Name
Email
Website