iPhone白苹果的小自救办法

今天去拜山回来,在家里稍微上了一下网,发现Cydia上面说LockInfo又更新了,确实最近那个作者似乎比较勤快,遂更新之。结果发现第一次锁屏之后LockInfo能在LockScreen上面显示,之后的话就完全不见踪影了。估计是作者更新的太心急,这些beta的东西让大家变成了测试员了。

晚上出差,在酒店看到twitter上面作者说要“rolling back 2 official release”,这个就知道出事了。但是之前作者又说了“I know the latest LockInfo beta is messed up. It’s only an issue if you don’t have cydget installed.”,这样看来似乎是要装个LockInfo和Cydget的整合版本。于是上Cydia上面装了,结果在安装完以后Cydia刷新之时,屏幕定住了,很明显,死机了……只好让Home和Power一起按着来重启,结果进入启动时的白苹果画面,提心吊胆了若干分钟之后,iPhone来了一声凄厉的惨叫,但是依然是白苹果,只不过同时多了点白菊花。杯具啊~~想起今年年三十晚上因为软件冲突导致不得不重装3.1.2固件的痛苦。

让iPhone连上Laptop上面,发现有反应,用i-FunBox居然能连上iPhone!这样就好办了,既然机器还能正常连着,证明基本的服务是正常的。但是熟悉的SpringBoard不能出现,机器短暂一段时间会有一声惨叫,证明就是某些随SpringBoard的启动项有问题,导致SpringBoard起不来。基本问题应该就是刚才装的LockInfo Cydget在安装的时候出错导致的。既然如此,也就是说某些第三方启动项导致SpringBoard起不来,方向定好了以后,下一步就进入调研阶段了。

理论上,对于大部分小白来说都希望能够用91猪手来修复白苹果,不过鉴于本人一向有研究解决问题的风格,而且91猪手名声实在不算好,我也不喜欢装这个东西还要给它硬生生的插一个Daemon程序在里面,于是还是自己动手丰衣足食吧。用Google研究了一把之后,终于找到解决的办法:

  1. 首先启动iPhone,在其能够连上电脑,用i-FunBox可以浏览到机器文件之时,浏览并下载这个文件到电脑本地:/System/Library/LaunchDaemons/com.apple.SpringBoard.plist (这个plist文件就是管SpringBoard启动时候的配置文件了,你可以认为它就是我们在Dos里面的那个config.sys或者autoexec.bat文件)
  2. 打开这个plist文件进行编辑,注意iPhone里面的plist文件虽然是一些XML格式的文件,但是存储方式可能是文本型的,也有可能是二进制型的,所以要上网找一个plist文件的编辑器,例如一个叫PropertyList Editor的东西。先把这个本地的plist文件作个备份,然后打开plist文件之后可以找到以下片段:

    <dict>
    <key>DYLD_INSERT_LIBRARIES</key>
    <string>/Library/MobileSubstrate/MobileSubstrate.dylib</string>
    </dict>

    将其改成一下形式

    <dict>
    <key>DYLD_INSERT_LIBRARIES</key>
    <string></string>
    </dict>

    也就是把MobileSubstrate这个给干掉了,这个库主要就是管不少第三方越狱工具的,没了它,很多第三方包都启动不起来的了。保存好文件之后,将本地修改好的文件重新上传的iPhone上面进行覆盖,然后重启iPhone。

  3. 接下来的重启应该会比以前快了很多,然后进入iPhone界面之后,就发现很多越狱后的东西都用不上了,例如WinterBoard的主题等等。接下来,就是进入Cydia里面,将之前弄错的东西干掉,例如我这里就是把之前装的LockInfo的beta版本和LockInfo Cydget给删除掉,另外如果Cydget不能卸载干净的话,可以自行上Cydia的Repository上面下载一个最新的Cydget安装deb文件,自己安装,然后再进入Cydia里面把它卸载掉,这样就可以了。最后将之前备份的com.apple.SpringBoard.plist文件重新上传回iPhone上面覆盖旧文件。也就是说把MobileSubstrate的启动项恢复过来。然后重启一下iPhone。
  4. 重启完了以后,你就发现又可以回答熟悉的SpringBoard界面了。总算不用重新刷固件了。

总结一下,iPhone里面的第三方越狱软件不要随便乱撞,毕竟都是程序员开发的,也没有经过苹果或者其他机构严格审核测试的,所以难免会有各种问题,最直接的影响就是造成死机然后白苹果的杯具。这个时候不能慌,反正最差的境地就是重现刷固件罢了,只是时间上面的开销会比较大。而且大不了iPhone用不了了换另外一台电话用用(我都几乎打算有什么万一的话,明天在去客户的路上去华强北买个山寨机器了)。之后如果iPhone还是能够连上电脑,被iTunes或者i-FunBox之类认到的话,不妨可以试试上面的办法,干掉第三方启动项然后卸载垃圾之后恢复过来看看(其实91猪手的所谓白苹果修复也是强行杀掉所有的MobileSubstrate项,只不过它不知道到底哪个有问题,就帮你一锅端了罢了,不够自己动手那么智能啊!)

以上这个办法可能是特事特办,不一定有普遍性,但是起码对我来说是一个解决问题的思路和解决这次问题的一个办法,故记录下来,以作备份用。唉,不成熟的deb程序也是会经常害死人的啊,亏我还贡献了钱个LockInfo的作者啊。

===========================华丽的分界线===================================

PS:被老婆投诉好久没有更新blog,因为确实比较忙,而且今晚因为这个事情导致iPhone关机而忘记接家里的电话,以此技术贴说明原因:老婆,我不是故意不接电话的啊,确实是我的机器出问题了,我没有在出差时去鬼混啊!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注