iTunes
升级到12.7.0.166
之后移除了App Store
的功能。苹果官方提供了iTunes 12.6.3
支持的App Store
和iOS 11
,下载地址为iTunes12.6.3.dmg。
这个时候我们按照常规的打开iTunes
应用时,会提示iTunes Library.itl
由高版本创建,资料库无法打开,如下图。
重新退出应用后,按住
option
键双击打开iTunes
,单击创建资料库,如下图。打开
iTunes
之后,勾选应用,如下如。这时,在右上角的搜索框中输入想要下载的应用名称,如下图。
单击搜索列表中对应应用的获取或者下载按钮,即可下载该应用最新版本的
ipa
文件,如下图。下载之后,在资料库中找到刚刚下载的应用,单击右键,在弹出的快捷菜单中选择在Finder中显示选项,如下图,就会定位
Finder
所对应的ipa
文件的位置了(这里下载的是微信 6.7.1)。通过这种方式只能下载最新版本的应用。下面介绍一种结合
Charles
下载早期版本应用的方法。(以网易云音乐为例)打开
Charles
,设置Mac OS
全局代理,然后下载你需要获取应用,即可在
Charles
中看到类似https://p7-buy.itunes.apple.com
。对该请求下断点,图中2的原因后面会说。然后删除资料库中已经下载的应用,重新单击获取应用的按钮,就会触发断点。在
Request
发出时,单击Execute
按钮继续发送请求。Response
会再次触发该断点。单击Edit Response
选项,选择XML Text
选项,可以看到类似如下的内容。如果你出现如下错误,是因为没有支持对
https
的请求,只需点击断点图中2的位置。选出我们需要的那部分内容:
<key>softwareVersionBundleId</key><string>com.netease.cloudmusic</string>
<key>softwareVersionExternalIdentifier</key><integer>828090879</integer>
<key>softwareVersionExternalIdentifiers</key>
<array>
<integer>812932579</integer>
<integer>812945326</integer>
......
<integer>827420055</integer>
<integer>827635604</integer>
<integer>828090879</integer>
</array>
解释一下这里的含义
-
softwareVersionBundleId
:当前下载应用的Bundle ID
。 -
softwareVersionExternalIdentifier
:其中的828090879
和下面array
中最新的数字对应,表示当前下载的版本。 -
softwareVersionExternalIdentifiers
:包含该应用所有版本所对应的数字。为了下载早期版本,需要获取这里对应的数字。
假如需下载版本827420055
的ipa
文件,可以再次单击获取应用的按钮,触发断点,然后单击Edit Request
选项,得到如下内容。
这里的828090879
表示当前要下载应用的版本。将这个值修改为827420055
,然后单击Execute
按钮,等待下载完成。在Finder
中现实得到了网易云音乐 5.3.0.ipa
。那么,如何将这些数字和版本号对应起来呢?在iTunes
的搜索结果中单击目标应用下面的下拉菜单,选择复制链接选项,(题外话,细心的同学已经可以看到更新二字,表示下载的是早期版本)如图:
例如,复制的链接是https://itunes.apple.com/cn/app/%E7%BD%91%E6%98%93%E4%BA%91%E9%9F%B3%E4%B9%90-%E9%9F%B3%E4%B9%90%E7%9A%84%E5%8A%9B%E9%87%8F/id590338362?mt=8
。提取其中的ID "590338362"
,然后访问https://api.unlimapps.com/v1/apple_apps/590338362/versions
。全局搜索827420055
,在其中找到对应版本号的external_identifier
。