编译属于你自己的 Sultanized MoKee

编译属于你自己的 Sultanized MoKee
0

#1

编译属于你自己的 Sultanized MoKee

起因

上学期在课堂上把等于四的屏摔碎了,将就着用了大半年,最后禁不住诱惑去广埠屯把屏幕换了。换屏之前用的是 MoKee,虽然刚到手是正常使用,但是升级版本之后会出现花屏现象,而且会有接电时长按变多个位置同时被点的现象,我猜是屏没装好,毕竟不是官方售后……自己也暂时没办法拆机,只能试试其他 ROM 了。经过多次实验,Sultanized ROM 和官方的氢和氧都可以正常使用,但是 Sultanized RR 和 Sultan 维护的 LOS 都不是我的菜。在家网络环境不好,也就只能官方先用着了。来学校以后,又有了折腾的心,于是开始编译属于我自己的 Sultanized MoKee

准备

首先搭建我们的编译环境,我使用的是 Archlinux,与 Ubuntu 等 Debian 系发行版有部分所需包的包名不相同,所以我在这里接绍一下准备过程

首先,你的设备得有 Sultanxda 维护的 Unofficial LOS(不然怎么叫 Sultanized 呢)

然后,安装以下包

$ yaourt -Ss gcc-multilib git gnupg flex bison gperf sdl wxgtk2 squashfs-tools curl ncurses zlib schedtool perl-switch zip unzip libxslt python2-virtualenv bc rsync ncurses5-compat-libsAUR lib32-zlib lib32-ncurses lib32-readline lib32-ncurses5-compat-libs xml2 lzop pngcrush imagemagick python2 python3 jdk8-openjdk repo python2-virtualenv

如果你之前安装了其他版本的 openjdk,使用这个指令来切换

# archlinux-java set java-8-openjdk

然后我们来同步源码

$ mkdir ~/mokee
$ git config --global user.email "your@email.address"
$ git config --global user.name “Your Name”
$ cd ~/mokee
$ repo init -u https://github.com/MoKee/android -b mkn-mr1
$ repo sync -j4 -f --no-clone-bundle

额,由于编译的时候会自动设置 CCACHE(我记得是这样)就先不管它了

修改与编译

我的设备是等于四,那我当然选择编译等于四啦

$ cd ~/mokee
$ source build/envsetup.sh
$ breakfast oneplus3

这样以后,我们就可以开始修改,让 Sultanxda 的内核源码和 MoKee 融♂合了

首先我们把 ~/home/mokee/.repo/local_manifests/roomservice.xml 修改成下面的样子

然后再同步一下

$ cd ~/mokee
$ repo sync

好,我们再来修改会出问题的地方,首先删除 ~/mokee/packages/apps/Dialer/tests 文件夹(在我这里会导致编译报错),然后重命名 ~/mokee/device/oneplus/oneplus3/lineage.mkmokee.mk,文件内容中的 vendor/cm/config 改为 vendor/mk/configlineage_oneplus3 改为 mk_oneplus3lineage.dependencies 重命名为 mk.dependencies~/mokee/device/oneplus/oneplus3/pocketmode~/mokee/device/oneplus/oneplus3/doze 目录下 Android.mk 中的 org.cyanogenmod 改为 org.mokee (可能还有修改,但是不太记得了),~/mokee/device/oneplus/oneplus3/cmhw 文件夹里面的内容也要进行类似的修改

接下来同步一下 Sultanxda 的 patch

$ cd ~/mokee
$ git clone https://github.com/sultanxda/patcher.git
$ ./patch/patcher.sh

然后就可以开始搞事情啦

$ cd ~/mokee
$ virtualenv2 venv
$ source venv/bin/activate
$ lunch mk_oneplus3-userdebug
$ make -jN

快要编译完的时侯会给一个 Error system/core/include/cutils/properties.h:22:10: fatal error: 'sys/system_properties.h' file not found 这个时候我们执行如下命令

$ mka bacon dist

静静等待结束,就可以在 ~/mokee/out/target/product/oneplus3 里面找到你的卡刷包啦,赶紧备份然后刷入体验吧!

问题和截图

编译出来的 ROM 确实不会再花屏了,MoKee 用着就是舒服。再加上 Sultanxda 的优化,美滋滋。但是还是有些许问题存在

  • LED 灯控制中,只能改变呼吸灯的长短和频率,不能改变颜色
  • 每次重启以后 pocketmode 会 fc
  • 有快充但是不会显示DASH
  • 系统语言为zh_CN的情况下运营商会显示CMCC ─ 中国移动 ─ CHN-UNICOM,看起来像三卡三待……(这个似乎和我的号码段有关?)

附上我的截图

(提示一次只能放一张图,所以放在楼下了)

PS: 感谢U大对我问题的一系列解答,@updateing

如果本文过程中有不妥当的地方,欢迎大家指出,受教了


#2

Sultan 内核


#3

三卡三待(滑稽)


#4

编译跑崩溃的KDE


#5

这篇文章很不错,支持一下楼主,此外,这篇文章属于开发文档,我会帮助你移动到开发文档专区。
不过为了防止小白乱发帖,开发文档专区对发帖者的用户组有限制,我不知道会不会影响你之后编辑更新文章。
因为新论坛的一些系统机能我也还没彻底了解,楼主可以试一下,看看能不能正常编辑,如果可以就没问题了。


#6

好的,谢谢龙猪大大(并不能正常编辑,提示没有权限 :joy: :joy:


#7

没准很快你就有Developer头衔了 :flushed:


#8

楼上说的八九不离十,等我想下,Developer的头衔不能随便给,我想想个办法,稍等。


#9

魔趣的主代码拼 Sultan 的 device 和 kernel…

其实 hardware/qcom 那仨不需要换的


#10

这样啊 :joy: 主要是我不知道花屏到底是哪个部分治好的,所以就全部替换了没怎么管,谢谢导演告知 :joy:


#11

好了,你试试吧,应该有编译权限了。


#12

吼了,有权限了,谢谢龙猪大大 :joy: :rofl: /滑稽


#13

Contributors,6666666666


#14

之前忘了讲,你文章中有错误。
首先魔趣lunch时的设备名字不是mokee_xxx,是mk_oneplus3这样的
依赖文件是mk.dependencies


#15

依赖文件那个是我没主意,已经修改,谢谢提醒。但是 lunch 的时候我一直写的 lunch mk_oneplus3-userdebug:joy:


#16

大神,我特别想要个移植APP的教程,就是吧官方软件移植到魔趣里的…我是努比亚Z17目前把相机,图库,这些主要的东西提取出来但都是无法安装直接放System里改权限也不行…希望大神能出个移植教程或者指条明路,谢谢了…


#17

不好意思,对于非开源部分的移植我无能为力


#18

和这个是对应的:
应为mk_oneplus3


#19

唔,改的时候还是有点想当然,编译过了就没管了 :disappointed_relieved: ,谢谢提醒,下次还是好好看源码改吧,长记性了 :flushed:


#20

膜拜大神中。

.