小7摆脱万年4.0.4之魔咒-CM10.1
首先附上贴吧:悄悄告诉你:小7有安卓4.2了,我深夜撰文,实属难得~
算是我第一次搞Android吧。。其实啥也不懂(就瞎搞!),借鉴前人的经验(我们的口号是什么?copy copy再copy),凭直觉胡改配置,基于Samsung S5282和S6818,(感觉这两部机很像,可能s6818是国行版吧?),感谢Art-Chen的内核还有device tree,不然我都不知道去哪搞内核源码了。。
先附上刷机包下载地址:
CM10.1 Android 4.2 密码:qcptws
CM10.0 Android 4.1
系统工作的组件:
- 相机(录像结束闪退bug)
- 声音
- EGL(使用S6818版本)
- 亮度(包括熄屏闪屏问题)
- WiFi
不工作(Bug):
- 基带(打不了电话)
- 硬件传感器(不能自动旋转屏幕?)
也不知道自己抽了什么风,废了一个多月快两个多月的时间折腾家里几部老机,不过总算出了点成果,这算成果之一吧,还有Postmarketos,emmm,那个就属于半成品了
来几张我家小7跑cm的靓照吧。。(这新屏幕可花了我20大洋呢)
做些记录:
- 编译环境:Ubuntu 14.04,java6就这样吧,电脑一定要够快,网络要好,不然编译等死你。
- 内核树:
- 我的device tree:
- Vendor blob:
- (jellybean cm10.0才要)要替换两个repo:
- (cm10.1)加入MemoryHeapIon.h MemoryHeapIon.cpp等几个文件(包括修改Android.mk),参考,修改相应的libbinder里面的文件即可,这样才能让相机和hwcomposer工作
- 好像没啥了(废话)
我发现的有趣东西:
- 用S5282开源的light驱动能修复闪屏问题
- jellybean的代码狂改之后能兼容三星相机
- 貌似只有s5282相机驱动才能工作,s7568,s6818的驱动预览绿屏,貌似s5282驱动的照片不是很好
- 神奇的内核树,一定要4.3版本gcc
- UMP Mali和EGL目前发现只有S6818版本工作,后经网友@fxsheep点醒,说7568是旧版驱动。。emmm,有空再rebase一遍内核树吧,说不定能工作
- 自己编译的cwm按键没反应。。真不会修
- 基带问题真的不会修(废话)
- Audio驱动务必用s6818的,s5282的有bug。。
- hwcomposer和gralloc也要s6818的
想不起来了,深夜回想真累。。累了就睡觉觉吧,8月1号了,开学日不远了哦~起床再更Postmarketos的笔记吧
补记录:
遇到类似这样ValueError: malformed recovery.fstab line: "/efs ext4 /dev/block/mmcblk0p3"
的错误怎么办?
在xda上找到了答案,用下面这个Patch:
tools/releasetools/common.py | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/tools/releasetools/common.py b/tools/releasetools/common.py
index e45bb96..f7945ab 100644
--- a/tools/releasetools/common.py
+++ b/tools/releasetools/common.py
@@ -125,6 +125,7 @@ def LoadInfoDict(zip):
if "fstab_version" not in d:
d["fstab_version"] = "1"
+ d["fstab_version"] = "1"
try:
data = zip.read("META/imagesizes.txt")
@@ -187,8 +188,8 @@ def LoadRecoveryFSTab(zip, fstab_version):
line = line.strip()
if not line or line.startswith("#"): continue
pieces = line.split()
- if not (3 <= len(pieces) <= 4):
- raise ValueError("malformed recovery.fstab line: \"%s\"" % (line,))
+ if not (3 <= len(pieces) <= 7):
+ raise ValueError("malformed version 1 recovery.fstab line: \"%s\", pieces: %d" % (line,len(pieces),))
p = Partition()
p.mount_point = pieces[0]
@@ -196,7 +197,7 @@ def LoadRecoveryFSTab(zip, fstab_version):
p.device = pieces[2]
p.length = 0
options = None
- if len(pieces) >= 4:
+ if len(pieces) >= 4 and pieces[3] != 'NULL':
if pieces[3].startswith("/"):
p.device2 = pieces[3]
if len(pieces) >= 5:
食用方法:
保存到build目录下,然后path -p1 < filename.patch