前言
我想我们是无法离开消费主义的,但至少我们可以试试物尽其用的绿色消费主义。
本文以iPad1代为例,但内容应该适用于所有无法升级到ios9的苹果设备。虽然看起来是越狱和破解教程,但其中对Cydia的使用只涉及功能性拓展的第三方应用,虽然下文会涉及Paper By 53的破解,但是原App购买已失效,以及开发方在后续更新中已经开放免费使用所有笔刷和色盘,所以请不要误解为笔者支持非法破解以及非法下载,我是不支持的。
本文是威玲旺卡原创笔记,没有告知请不要转载,谢谢。
本文内容流程如下:
I. App Store不支持老设备的原因探索
II. 准备工作
III. 不Root的方法
第1步. Root iPad 1代
第2步. Cydia里加入apt源,安装f.lux, iFile, FakeClockUp, Activator
第3步. iFile闪退的解决办法,并且把arm64键值加入
第4步. 通过App Store上安装官方降级应用
第5步. 解决Paper by 53的Native App无法在应用内购买的问题
第6步. App不再播放Youtube内容的解决办法(包括修改API,早晚会失效的,不用强求)
第7步. App妥协使用Spotify的办法(早晚也会失效的)
第8步. iPad1代还能使用的App推荐汇总
我们可以见识到的:
- 优秀的三方扩展范本(Activator和f.lux)
- 退而其次,如何善待buggy但可用的程序 (iFile)
- 苹果方拒绝提供支持时,伪装成64位晃过App Store的筛查
- 本地App方不再维护旧App时破解应用内购买(Paper by 53)
- Web App的服务器方不再维护时的第三方解析(Tubefixer)
- Web App的服务器房不再维护时的不再完美精致的委曲求全和反用户体验(Spotify)
I. App Store不支持老设备的原因探索:
古老指的是2014年前发布的苹果产品,这些产品之所以遇上困难是因为App Store现在只支持arm64的64位应用。在开发者把应用通过xcode提交的时候都会有arm64 requirements,简单地说,苹果已经不让开发者打32位的IPA了,所以以下这些机器在App Store装任何App都会有ios不兼容而无法安装的提示。
这些“古老”机器包括:iPad 4代及早前,iPad Mini一代, iPhone 5c及早前, iPod touch 5代及早前。
但在2014年前大多App的旧版本都是以32位IPA发布的,而降级安装这些旧APP正是这些“古老”苹果设备所需要的,也是这个教程的目的。
II. 准备工作:
我认为对老设备最大的尊重是让它体面地继续服役,而不是苦苦支撑。
首先,最重要的准备工作是明确需求,我要在这个老设备上干什么。看书,标记文档,画图,还是码字或者听歌看视频,当苹果真正不再给这些设备任何余地时,这个教程很可能就没有机会重新来一次了,所以如果你为了你的设备耗费精力好不容易弄完后,做一个备份会是相当明智的。
其次,所有Web App的失效只是时间问题,这超出我们控制范围,安装靠谱优秀稳定的Native App将会更有保障,以保证长期的可用性,而我们尝试使用Web App或者Hybrid App的时候要做好它随时失效的心理准备,如果不能用了也不用太在意。
我一定要安装上的刚需(都是Native App):
- 全屏时钟(App:NiceClock,不用Root)
- PDF阅读(App:iBook,不用Root)
- PDF标记(App:Adobe Reader,需要Root)
- 草稿纸带画笔(App:Paper by 53,需要Root)
- 调整显示器的色温的防蓝光程序 (App:f.lux 需要Root)
- 多几个浏览器以防万一Safari完全过时导致无法加载 (App:傲游云,不要Root,Chrome,需要Root)
非刚需(都是Web App):
- Spotify听歌(需要Root)
- 印象笔记(需要Root)
- Youtube(需要Root)
- Google翻译 (需要Root)
- TuneIn电台(需要Root)
下面是我们需要的设备
- 一台装好iTunes的Mac或者PC
- 一个有较新ios的苹果移动设备iPad,iPhone或者iPod Touch
- 因特网
- 你的古早设备
- 耐心
III. 不Root的方法:
如果你的机器没有过去的备份,没有已经安装的App,而且不想Root机器的话,能用的App很有限,方法如下,
- 通过高级ios设备登陆同一个apple ID在app store购买想要的目标App
- 回到低级ios设备的app sotre的已购买项目尝试安装这个App的低级版本
部分App仍旧可以这样安装,但是大多数会因为不兼容(This App Is Incompatible With This ios)而无法安装了(虽然此时这个提示不完全是真的,因为兼容的降级版本非常可能是存在的,但是我们的ios版本被App Store的初步筛查拦截了,根本没有机会获得降级版本)。原因正是来自App Store的64位限制检查,我们需要手动增加一个arm64的键值来伪装成64位处理器已绕过App Store的初步筛查,这就是为什么我们需要Root权限来安装降级App的原因。但是即使已经Root了,我们仍然需要另一个具有较新ios的苹果移动设备将目标App下载为已购买才可能降级安装。(这在下面的第三步有详细叙述。)
下面我们将正式进入完全教程:
第1步. Root iPad 1代:
首先,在备份好的情况下我们放心Root,因为可逆,可以随意恢复成出厂设置或者恢复备份。
这里以Greyd00r提供的工具来Root设备。虽然Greyd00r的主要目的是把iPad1弄成看起来像ios9的皮肤,但也提供了一键Root的功能。和网站主人推荐的步骤不一样的是,我非常不建议甚至反对大家更新皮肤,原因首先出于稳定性,(iPad1代的分辨率和处理器的年龄)其次出于
- 保持和谐设计。iPad1代的硬件棱角造型设计和它UI控件的棱角设计是对应的,简单地说,软件界面和硬件界面是故意配套的,比如椭圆输入框的弧度和电源按钮以及侧边按钮都是一样的,矩形按钮圆角的弧度和iPad外壳的圆角弧度都是一致的。这种细节即使我们主观上没有意识到也是会被我们的大脑皮质所捕捉的,所以我们会有很舒适统一的舒适感,伪装成后期的界面不值得。
- ios5的手势控制是交互经典范例,多指上挪显示多任务和5指侧挪切换,这种“稳当的挪动控制”和现在电子产品上的全部基于“灵活滑动”的手势操作有着截然不同的体验。
- iPad1代值得被记住的一点还有硬件的手感,直角侧边滑动按钮给手指的触感反馈在后期苹果非棱角设计和按钮改动后就此丢失了,iPad一代的做工和设计就和早期iPod一样,它们突出了工业设计的硬件美感,它的优秀在今天也是值得仔细欣赏和学习的范本。
回到正题。Root的步骤:
- 请访问 https://www.grayd00r.com/ipad1g
- 打开iTunes先备份你的设备
- 通过iTunes把机器恢复成出厂设计
- 在Mac或Windows上打开Greyd00r工具(https://www.grayd00r.com/ipad1g)(在Mac上会出现some files are missing的问题,是权限问题导致的,此时右键MacOSX-Grayd00r,选择Show Package Contents,然后双击MacOS/MacOSX-Grayd00r自动启动终端,就可以点击Play的图标运行了,如下图)
-
iPad此时应该开机了显示欢迎界面了,正常设置iPad和Wifi,进入系统后,会发现SpringBoard的第二页出现了Cydia和Installer,其中Installer就是ios9的皮肤。如下图前两项。
Greyd00r网站会让安装Installer,但是我前面叙述了非常不推荐安装皮肤,所以请不要点击Installer。
打开Cydia,会有升级提示,选择全面升级。Cydia角色请选择Developer。此时你的iPad已经获得Root权限,我们进入第二步。
第2步. Cydia里加入apt源,安装f.lux, iFile, FakeClockUp, Activator
-
在apt的默认源下我们安装两个拓展Activator,f.lux和一个应用iFile
具体安装方法是,这三个东西我们在Cydia首页右侧栏都可以看到,如下图:
分别点进去,选择安装即可。
其中自定义手势控制的Activator(第三步iFile部分我会介绍怎么方便地使用它)和保护眼睛的防蓝光显示的f.lux是自由开发者的经典艺术作品。请注意安装完f.lux后我们立刻会注意到屏幕就变暖色调已经亮度下来了。iFile是个文件管理器,可以轻松浏览和编辑文件,但可惜在这个系统下是Buggy的,因为每次启动iFile时它都会企图注册,但是ios5.1.1下会注册失败,所以我们可能会发现这个应用闪退,无法使用。这在第三步时我们会解决,目前请让它保持这个闪退的状态。
(注释:目前Cydia默认源包括BigBoss,Telesphoreo,ModMyi,ultrasn0w,ZodTTD,其中ultrasn0w已经失效了,这在每次启动Cydia的时候终端里的报错我们会发现,其实Cydia在2018年时维护者已经把商店下线了,随着时间失效的源只会越来越多,是正常的,因为这些都是所有开发者的志愿工作。) 现在我们安装一个优秀的加速拓展FakeClockUp,在Cydia的源标签页,我们点击“编辑”,“添加“,加一个源”http://hitoriblog.com/apt“,终端更新apt后,换到“搜索”标签页,搜索“FakeClockUp”,安装。安装成功后,我们会发现iPad的响应速度立马变得非常灵敏快速。(这个拓展是无害的,因为它只是加快了转场动画的速度,造成了系统变快的错觉,其实只是动画的时间少了。)
如果你需要使用Youtube的话(第六步会深度涉及解决Youtube问题),我们还需要一个在Cydia里安装工具叫TubeFixer和一个开关拓展叫Hosts File Flipswitch,在Cydia的源标签页,我们点击“编辑”,“添加“,加一个源”http://cydia.invoxiplaygames.uk/beta/“,终端更新apt后,换到“搜索”标签页,搜索“TubeFixer“,安装,再搜索“Hosts File Flipswitch”安装,其中Hosts File Flipswitch建立了一个开关通道,把是否使用Host文件作为一个控制开关,这样就可以通过手势做到开启或关闭,而Host文件是IP地址和域名的映射,这些都是为第六步搞定Youtube做准备的,因为iPad1代的Youtube应用已经因为服务器API改变而失效了。
Cydia没风险,但是加入不可靠的源后,很可能安装到有风险的App造成破坏,下图是我的Cydia源,这些源都是主流和相对安全的。
另外我们已经安装的这些拓展都是成熟完善并且友好的,除了可以通过SpringBoard上的icon进入配置(此外,一些并没有独立的icon和配置界面),我们可以在设置里看到它们并且进行设置,如下图FakeClockUp的响应时间,f.lux的自定义亮度,都可以在“Setting”的“Extensions”里搞定:
下一步,我们由于要编辑系统文件必须要解决iFile的Bug。
第3步. iFile闪退的解决办法,并且把arm64键值加入
目前文件管理器iFile有闪退问题,而且iFile已经完全停止维护了。我们的笨实验发现在Wifi没有开启的情况下,iFile虽然有注册表的报错但是却可以启动,所以笨办法是开启飞行模式后再打开iFile,修改完我们想要修改的文件后,再关闭飞行模式。
为了让笨办法的操作不那么繁复。同时好好利用我们已经安装的自定义手势拓展Activator,我们会通过Activator来简单方便地开启/关闭飞行模式。方法如下:
- 设计一个简单好记的的手势:比如“滑动最上面的状态栏”,无论是左滑还是右滑,都可以做到toggle飞行模式的目的。那么我在开iFile前只要滑一下状态栏,飞行模式就开了,开iFile就不会闪退,编辑完文件后,再滑一下状态栏,飞行模式就关了进入网络环境,就不需要在Setting,iFile和另外的应用里切换进出,小心翼翼地记住循序。(尤其当iPad1代的多任务是线程挂起模拟的)
- 配置Activator,具体如下:
任意位置-顶部状态栏-向右拖动-分配给“Airplane Mode”-点击“创建“
任意位置-顶部状态栏-向左拖动-分配给“Airplane Mode”-点击“创建“ -
测试是否有效,手势触发后,都会有对话框提示生效的操作。如下图:
-
通过手势控制飞行模式状态,确定在飞行模式下打开iFile,我们现在要再系统里加入一个叫arm64的键值,把自己伪装成支持64位的,这样App Store才会允许我们下载降级App。具体如下:
路径是/System/Library/CoreServices/SpringBoard.app
如果你是iPad一代,找到文件K48AP.plist
如果你是其他设备,映射表如下:
iPhone 3G:N82AP.plist
iPhone 3GS:N88AP.plist
iPhone 4: N90AP.plist, N90BAP.plist, N92AP.plist
iPhone 4s: N94AP.plist
iPhone 5:N41AP.plist, N42AP.plist
iPod Touch 2代:N72AP.plist
iPod Touch3代:N18AP.plist
iPod Touch4代:N81AP.plist
iPad1代:K48AP.plist
iPad2代:K93AP, K94AP, K95AP, K93AAP.plist
iPad3代:J1AP, J2AP, J2AAP.plist
iPad4代:P101AP, P102AP, P103AP.plist
iPad Mini1代:P105AP, P106AP, P107AP.plist
找到对应的文件后点击选择“属性表编辑器Property List Viewer”再选择进入“capbilities”,选择右下角的“+”号,添加名称“arm64”,类型选择“boolean”,再点击“创建”,再把我们刚才添加的“arm64”右边对应的开关打开,如下图所示,点击“完成”。
当这一步完成的时候,我们的系统已经被伪装成支持64位的了。这样可以骗过App Store来为我们找到合适的降级App。
下一步就是打开App Store安装App了,记得在用滑动状态栏的手势关闭飞行模式。
第4步. 通过App Store上安装官方降级应用
苹果对古老设备的支持方案是“只给下载安装已经购买过的App”而不是“随意购买App”,我相信这一方案的核心原因是欧洲的消费者法,如果消费者购买了此App,那在规定的年限内有享受使用权的保障,虽然相对传统商品,电子产品的法案保护体系是不够完善的。所以在我们的旧设备上,即使我们已经伪装成为64位系统了,但古老的ios还是不能随便购买/安装App。
我们必须使用较新的ios9甚至ios11以上的系统使用与旧设备相同的Apple ID去App Store采购收费/免费项目,以获得合法使用权,随后在旧设备的“已购买Purchased”的标签页里下载这些已购买App的降级版本,此时,只要App有旧设备的ios兼容版本就可以顺利安装,否则会提示不兼容(此时的提示才是真的不兼容,说明App的开发对象就是高版本ios,不存在对应的降级App,那就无法拥有了。)
这一步结束时,你想要的App的icons都应该出现在你的SpringBoard上了。还是否有效以及功能完善不完善另当别论,但是它们的最高兼容版本都被安装了。
下面我们进入第5步,完善Native App的功能。
第5步. 解决Paper by 53的Native App无法在应用内购买的问题
这里我们讨论可以离线使用的Native App,不依靠网络,这样意味着它的功能使用和开发者的服务器没有关系。但是这些App很多有应用内购买的功能,也就是说部分功能受限,包括当年著名的手绘App,Paper by Fiftythree,我们在按照第4步安装完后,会发现5支笔刷只有1支可用,调色板也不可用,App的功能大大受限,想要使用全部资源,我们必须分别购买它们,但是界面上的“购买”的链接已经失效了,但其实Paper by Fiftythree已经在2015年开放让所有用户免费使用预设下的所有基础笔刷和色盘,但是我们的iPad一代只能安装2013的1.3.4的版本,这旧版本的App让iPad一代用户丧失了使用全部功能的机会,此时的选项就是——破解它。
打开iFile找/var/mobile/Applications/xxxxxxBA727Cxxxxxx(其中xxxxx是一堆序列号,一个个点进去看app名称,找到paper没办法)找到注册文件/Library/Preferences/com.fiftythree.paper.plist,编辑它如下,就是加入注册码,
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "[http://www.apple.com/DTDs/PropertyList-1.0.dtd](http://www.apple.com/DTDs/PropertyList-1.0.dtd "http://www.apple.com/DTDs/PropertyList-1.0.dtd")">
<plist version="1.0">
<dict>
<key>IsFirstLaunch</key>
<true/>
<key>InAppPurchaseReceipt_com.fiftythree.paper.mixer</key>
<data>MTMzMzA1Njc5OC45MTQ0NjI=</data>
<key>WebKitDiskImageCacheSavedCacheDirectory</key>
<string></string>
<key>FacebookSharingEnabled</key>
<false/>
<key>ShowToolTrayGestureCompleted</key>
<true/>
<key>CameraRollSharingEnabled</key>
<true/>
<key>InAppPurchaseReceipt_com.fiftythree.paper.write</key>
<data>MTMzMzA1Njc5OC45MTQ0NjI=</data>
<key>InAppPurchaseReceipt_com.fiftythree.paper.color</key>
<data>MTMzMzA1Njc5OC45MTQ0NjI=</data>
<key>TumblrSharingEnabled</key>
<false/>
<key>IsFirstLaunch</key>
<false/>
<key>WebSmartInsertDeleteEnabled</key>
<true/>
<key>HideToolTrayGestureCompleted</key>
<true/>
<key>LastLaunchedVersion</key>
<string>1.2.1</string>
<key>InAppPurchaseReceipt_com.fiftythree.paper.outline</key>
<data>MTMzMzA1Njc5OC45MTQ0NjI=</data>
<key>InAppPurchaseReceipt_com.fiftythree.paper.essentials</key>
<data>MTMzMzA1Njc5OC45MTQ0NjI=</data>
<key>InAppPurchaseReceipt_com.fiftythree.paper.sketch</key>
<data>MTMzMzA1Njc5OC45MTQ0NjI=</data>
</dict>
</plist>
再重启应用,笔刷可用了。其实iPad1代拥有这个应用的全部功能,已经可以产出价值了
第6步. App不再播放Youtube内容的解决办法
Youtube App在iPad一代上很早就失效了,后来Safari还可以加载HTML5版本的youtube,用户忍着,最终有一天连Safari也不能加载了,现在iPad一代用户只可以用傲游云浏览器用HTML5看Youtube。
Youtube app失效的原因是API改变,URL解析地址的改变,目前有一个三方服务器帮忙解析,就是TubeFixer(https://tubefixer.ovh/),这种方式原始也危险,比如维护者可以收集信息,可以把所有解析引导到一个连接上来宣扬危险观点,可以故意封锁某些内容(把G公司可以所做的缩放到个人头上)。下面是使用Tubefixer的方法,记得我们第二步的时候安装了TubeFixer和Hosts File Flipswipe。
- 去Google Cloud登陆账号创建自己的项目获得一个属于自己的Youtube Data v3 API号码
- 再设置的TubeFixr启动Custom API Key然后输入这个我们自己的API号
- 用iFile把TubeFixr的域名和IP加入我们的Hosts文件,编辑/etc/hosts加入条目92.222.69.160 api.tubefixer.ovh
- 用Activator定义一个手势来toggle Hosts File
此时Youtube App就可以恢复使用,但是解析都在三方网站上(地球上的某个人那里)进行了,如果提示出现URL出现无法解析的问题,没有其他原因,就是三方域名DNS服务器太烂不响应了,用手势toggle一下Hosts(启动或者禁用)到直接IP访问等以期待恢复。
Youtube App三方解析恢复后如下:
最后,由于前面说了三方解析的不安全,但事实上这种工作是很低层,辛苦,麻烦以及对开发者完全没有回报的,但是它的价值是救活了很多古老的苹果设备,旧设备上连通的Youtube视频放眼全球很可能是相当一部分人娱乐的来源。
第7步. App妥协使用Spotify的办法(早晚也会失效的)
Spotify的旧版本不能正常链接了,原因也是服务器方的问题,旧版本里的URL无法解析,我们现在已经不再本地下载再导入iTunes了。在这个流媒体和Spotify垄断的时代,我还真的想不到其他办法。
委曲求全旧版本的方式:
- 不能在App内搜索,搜索即掉线
- 不能在App内看到唱片封套
- 能在线自己的播放单
- 能连接到Radio
- 能连接到艺术家页面
- 通过浏览器或者“spotify + 乐队名字” 直接获得艺人url后切换到App里代替App内搜索
- 能离线下载和离线播放
- 能Hifi在线和Hifi离线
- 旧版0.7.2.26的Spotify没有账号关联,所以这个可能是唯一一个账号可以多人使用的版本
我的Spotify的样子如下:
这样可以只在意音乐,所以我觉得也蛮好的,我可以只听歌不用在意封套是不是好看,歌手是长什么样。
第8步. iPad1代还能使用的App推荐汇总
- 阅读(本地):iBook, Adobe Reader
- 笔记(Web App):印象笔记(网络同步,插入图片和录音都正常)
- 媒体(Web App):TuneIn,Spotify,Youtube
- 工具(本地):Vituoso钢琴,Calculator+计算器,NiceClock全- 屏无广告时钟,Paper by 53手绘,Google Transltor翻译,f.lux,Activator
- 浏览器(本地):傲游云,Chrome,Safari
设备还能胜任的工作截图:
对比II. 准备工作里自己的需求,已经全部满足了,现在就该接iTunes备份了。
(完)