小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

系统工作的组件:

  1. 相机(录像结束闪退bug)
  2. 声音
  3. EGL(使用S6818版本)
  4. 亮度(包括熄屏闪屏问题)
  5. WiFi

不工作(Bug):

  1. 基带(打不了电话)
  2. 硬件传感器(不能自动旋转屏幕?)

也不知道自己抽了什么风,废了一个多月快两个多月的时间折腾家里几部老机,不过总算出了点成果,这算成果之一吧,还有Postmarketos,emmm,那个就属于半成品了

来几张我家小7跑cm的靓照吧。。(这新屏幕可花了我20大洋呢)
32b6447adab44aed78600d34bd1c8701a08bfb67.jpg
c46149c79f3df8dcd8263c41c311728b46102871.jpg

做些记录:

  1. 编译环境:Ubuntu 14.04,java6就这样吧,电脑一定要够快,网络要好,不然编译等死你。
  2. 内核树:
  3. 我的device tree:
  4. Vendor blob:
  5. (jellybean cm10.0才要)要替换两个repo:
  6. (cm10.1)加入MemoryHeapIon.h MemoryHeapIon.cpp等几个文件(包括修改Android.mk),参考,修改相应的libbinder里面的文件即可,这样才能让相机和hwcomposer工作
  7. 好像没啥了(废话)

我发现的有趣东西:

  1. 用S5282开源的light驱动能修复闪屏问题
  2. jellybean的代码狂改之后能兼容三星相机
  3. 貌似只有s5282相机驱动才能工作,s7568,s6818的驱动预览绿屏,貌似s5282驱动的照片不是很好
  4. 神奇的内核树,一定要4.3版本gcc
  5. UMP Mali和EGL目前发现只有S6818版本工作,后经网友@fxsheep点醒,说7568是旧版驱动。。emmm,有空再rebase一遍内核树吧,说不定能工作
  6. 自己编译的cwm按键没反应。。真不会修
  7. 基带问题真的不会修(废话)
  8. Audio驱动务必用s6818的,s5282的有bug。。
  9. 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

标签: none

添加新评论