New iPad 越狱记

New iPad 入手两三周, 一直就安分守己的用, 也没觉得有啥不爽. 期间充值 50RMB 用于购买 随手记专业版 (12RMB) 和 鳄鱼小顽皮爱洗澡 (6RMB), 做的好的 App 确实值得付费, 随手记我认证后在手机上也可以通过 Android 版同步. 用盗版还是心存愧疚, 一是现在自己也不差这么点钱, 二是作为 IT 从业者, 自己都不支持这个行业, 那怎么指望行业能好起来.

因为 iOS 系统自带中文输入法确实不够好用, 打算越狱装百度输入法, 另外如果想用 GoAgent 之类的东西在 iPad 上翻墙, 也都需要越狱, 所以 pod2g 大神的 Absinthe 2.0 放出来后就一直惦念快把自己手上这个 5.1.1 的 new iPad 给 JB 了, 但一直懒得搞, 看教程也都说如果已经装了很多应用, 越狱要比较久, 所以拖到今天才完成. 记录一下过程, 中间有个诡异问题, 如果有同样遇到此问题的, 希望能帮到你.

整体越狱过程按 91 上的 http://ipad.91.com/content/2012-05-25/20120525055537524_1.shtml 进行, 需要下载的工具 91 上也直接有提供.

iPad 一到手就将其升级 5.1.1, 所以只需要用 iTunes 备份数据, 以及备份自己的 SHSH. iTunes 备份也还比较快, 把一堆 iPad 上装的东西同步到本地后, 没到一分钟就完成了备份. 在备份 SHSH 的时候遇到了麻烦, 按 http://iphone.91.com/content/2010-06-28/20100628000014805,1.shtml 上的方法进行备份时, TinyUmbrella 一直无法启动, 同文件夹下 .log 文件内报如下错误

Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: com/sun/jna/Platform
    at com.semaphore.os.UIHandlerManager.getSystemUIHandler(UIHandlerManager.java:22)
    at com.semaphore.TinyUmbrella.(TinyUmbrella.java:131)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at com.semaphore.TinyLoader.loadTiny(TinyLoader.java:248)
    at com.semaphore.TinyLoader.access$000(TinyLoader.java:29)
    at com.semaphore.TinyLoader$1.run(TinyLoader.java:42)
    at java.awt.event.InvocationEvent.dispatch(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$000(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: com.sun.jna.Platform
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 21 more

一开始一直以为是自己的 Java 版本有问题, 看提示这几个包应该都是 Java 的基础包才对, 怎么可能找不到, 网络上找到的很多说法也是如此. 重装了几次 JRE 7u4, 整个卸载重装都弄过后还是一样的错误, 抓狂了. 找了半天终于在威锋上找到 http://bbs.weiphone.com/read-htm-tid-4677881.html 这么一帖, 楼主在 4 楼自己搞定问题, 就是缺这几个包, 下载下来解压到同目录后搞定.

剩下的就完全是按部就班的操作, 整个过程比我想的快很多, 不到 20 分钟就完成了所有的事情, 本来还以为 16G 的 iPad 装了 7G+ 的东西后会耗时很久, 实际看来也没用多久嘛, 被吓到了.

越狱后先装了一个百度输入法, 按照官网上 http://shouji.baidu.com/input/ihelp.html 里的流程来, 很快搞定. 中文输入体验确实要比自带的好很多, 不过还是有几个小问题:
1. 还没有针对 retina 屏的版本, 导致整个皮肤看起来非常糙
2. 不同输入模式的切换是在键盘上大幅度左右划拉, 这个切换没有提示非常不方便, 且一开始划拉距离短了就变成是按下滑动输入

然后就是翻墙啦, 去 GoAgent 的 Google Code Wiki 上找到官方文档 http://code.google.com/p/goagent/wiki/GoAgent_IOS, 按提示来:
1. 把身份改为开发者, 在 Cydia 里的 “软件源” Tab 左上角的 “设置” 里改
2. 装 SBSettings, Cydia 首页右上的推荐里就有
3. 添加新源 http://goagent-app.googlecode.com/svn/trunk/cydia/ 进 Cydia 软件源, 在这个源里安装 Python 和 goagent-local
4. 在 Cydia 里装一个 iFile 用于修改 GoAgent 的 proxy.ini 文件. 在 /User/goagent-local/proxy.ini (其实也就是 /var/mobile/goagent-local/proxy.ini) 里找 appid 并将值修改为自己的 GAE 名
5. 用 iPad 上的 Safari 打开 https://goagent.googlecode.com/files/CA.crt, 按提示安装证书
6. 回到 Cydia 的 goagent 源, 安装 goagent-toggle. 打开 SBSettings 面板 (我的是从屏幕右上角往屏幕中间滑, 不知道是不是默认的设置), 把 GoAgent 打开 (图标变绿)
7. 在 设置 -> Wi-Fi -> 现在连着的这个 Wifi 名 里, 将 HTTP 代理修改为 自动, 并把 url 修改为 file://localhost/var/stash/Applications/MobileSafari.app/8087.pac (官方说的第一个地址 file://localhost/var/mobile/goagent-local/8087.pac 在我这无效)
8. 打开 Facebook.com 测试, 翻墙成功, 玩去 :)

目测常用应用 Facebook, Twitter, YouTube, WikiPedia 等都可以正常使用, oh yeah
其中 Twitter 直接打开网页会提示 403 错误, 用客户端时将 api 的地址从 https://api.twitter.com 改成 http://api.twitter.com 后搞定