过年这几天一直在看编译rom的,昨天成功编译出来了,并且成功开机运行。
首先是安装必须的工具,编译twrp那里都说啦,这里不再赘述。
由于是编译的cm,那么就需要同步cm的源码,而不是omni的,这个地方就这句不同。

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

到这跟编译twrp那些步骤都是一样的。
接下来就是进入编译的环节。
需要几样东西
1.手机的devicetree
2.手机的内核源码kernel
3.手机的vendor
如果手机开源了,那么2,3应该都比较好做,1就得自己写啦。
由于我手机iuniu2官方没开源,用的e7的源码,而且土耳其的ferhat大神已经写好啦,我就直接拿来借鉴啦。
接下来开始做了。
device有几个不同的地方

根据官方的教程,你可以使用脚本生成devicetree,就是找到刷机包的boot.img,然后使用
./build/tools/device/mkvendor.sh IUNI U810 ~/boot.img
来生成,不过生成的比较基本少,估计你直接编译不一定是你要的结果。

第二个方法

官方还说了另外一个教程,就是说你不愿意用脚本,自己一个一个文件的敲又懒,可以找个相似的机型
然后再device目录下创建手机厂商/手机型号,例如device/IUNI/U810
然后把别人写好的放到U810里面来,自己动手改机型之类的

第三个方法

厉害的大神,自己写devicetree,然后写各种东西

vendor以及kernel就是创建相应的文件夹,然后相应的文件放进去。就可以开始编译了。
然后刚开始看教程的时候有一个地方没太懂,我还有点纠结,这回理解了。
修改local_manifest,添加

<project name="fat-tire/android_device_bn_encore" path="device/bn/encore" remote="github" revision="cm-10.1" />
<project name="fat-tire/android_kernel_bn_encore" path="kernel/bn/encore" remote="github" revision="cm-10.1" />

这个就是把github上fat-tire的android_device_bn_encore复制到device/bn/encore目录下。如果对于我iuniu2来说应该差不多是这样啦

<project name="feroxx/android_device_iuni_u2" path="device/IUNI/U810" remote="github" revision="iuni" />
<project name="feroxx/vendor_e7" path="vendor/IUNI/U810" remote="github" revision="iuni" />
<project name="feroxx/android_kernel_gm_e7" path="vendor/IUNI/U810" remote="github" revision="iuni" />

这个就是不用再自己一个一个的创建了,直接把网上别人写好的拿过来就好啦。
如果没有人写过那就别加啦,自己一个一个文件的写吧。
到这就算完成了,开始编译就好啦。

source build/envsetup.sh
brunch U810

这个U810就是你自己的手机型号。
等着编译就算完成了。
然后刷了就好了。
顺便说下,由于源码等问题,手机在开机设置向导选择wifi那会出错(我会说只要开wifi都会黑屏死机),
删除了setupwizard就可以了。然而我就这么愉快的开始了作死之路。
我刷进去之后嫌麻烦,进twrp直接删除结果那个文件夹删除不了。既然如此,就用命令行删除吧。
用着twrp那渣渣的终端,输入

mv CyanogenmodSetupWizard /sdcard

结果出错,就转不过去。好,传不过去那我就复制再删除

cp -r CyanogenmodSetupWizard /sdcard
rm -rf CyanogenmodSetupWizard

这样一样能结果。然而作死就是这么出现的。
不知怎么得手抖多打了一行

rm -rf /sdcard

我这数据啊!一个都不剩了!联系人!系统备份!各种记录!
慢慢找人要电话吧!
PS在电脑找到了一个联系人备份,一月份的,够用了!

教程来自编译非官方支持的cm教程

移植 AOSP 的必要条件都有哪些?
https://www.v2ex.com/t/350509

标签:安卓, 编译

你的评论