更新
此文章已经过时,但部分章节可被参考
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包,并刷进去体验吧