我的 iPhone 3G 拒绝将购买的应用程序传输到 iTunes。这给我的同步带来了很大的问题。
每当我尝试将应用程序从 iPhone 传输到 iTunes 时,它都会按部就班,但实际上什么都没有传输。它会在屏幕顶部的信息区域显示各种应用程序,但进度条永远不会前进。
相比之下,当我使用相同安装的 iTunes 同步其他 iPhone 时,进度条会前进并且应用程序会被传输。
在其他电脑上全新安装 iTunes 时也会发生同样的情况,看来我的 iPhone 是共同原因。我尝试过从备份中恢复手机,但没有任何效果。
这个问题几个月前就出现了,尽管手机已经升级到 3.0 和 3.1,但问题仍然存在。
最初这只是一个小问题,但我尝试修复它,结果却让事情变得更糟。我删除了 iTunes 中的所有应用程序,然后执行“转移购买”,希望这能解决问题。
它没有解决任何问题。而且,我现在根本无法同步。
如果我同步,iTunes 现在会“传输购买内容”,传输失败,然后删除我 iPhone 上的所有应用程序(和数据)。这也意味着我无法同步音乐、播客或其他任何东西。
我无法同步其他任何东西,因为我无法暂时关闭应用程序同步,因为 iTunes 会警告 iPhone 上的应用程序将被删除。
我也尝试过取消授权并重新授权。
我该怎么做才能使应用程序同步再次运行?
PS 我考虑过删除所有应用程序并逐个重新安装,希望这样能解决问题。但是我并不想对 55 多个应用程序这样做,也不想为需要登录信息的应用程序重新输入登录信息等,尤其是因为我可能会发现这并没有解决问题。
更新:
iTunes 9 的最新更新在一个关键方面有所改进。如果我让同步运行完成,iTunes 就不会再从我的手机中删除所有应用程序。因此,即使我仍然无法同步我的应用程序,我现在也可以同步我所有其他数据。
解决:
请参阅我对该问题的回答,了解我最终如何解决这个问题。
答案1
好吧,看来我终于可以修复它了,而且不会丢失所有设置/数据。但我要警告你,这并不好,而且它需要暂时破解我的手机。
首先,我对我的手机进行了越狱,使用了 blackra1n 应用程序,但任何越狱技术都同样有效。
然后我使用 cydia 安装了 OpenSSH 包(同样,任何安装的 jailbrake 包都可以)。
然后我通过 ssh 进入手机(用户名 = root,密码 = alpine)。
我进入 /private/var/mobile/library/safeharbor 并复制了目录列表,这样我就记下了我安装了哪些应用程序。此目录存储了应用程序的所有数据。
然后我删除了文件 /var/mobile/Library/Caches/com.apple.mobile.installation.plist,这个文件保存了安装哪些应用程序的详细信息。然后我重启了手机。
此时,唯一显示已安装的应用程序是 Apple 提供的应用程序 cydia 和 blackra1n。
然后我备份了手机。然后我恢复到当前固件,并让 iTunes 恢复我刚刚做的备份。
所以现在我有一部干净的手机,没有安装任何应用程序,但重要的是,我仍然拥有已安装应用程序的设置和数据。我已经开始重新安装我的应用程序,它们正在正确地获取仍然存在于 safeharbor 目录中的数据和设置。
我已经检查过应用程序同步是否有效,我只是祈祷它能保持这种状态。
这里的重要技巧是删除 com.apple.mobile.installation.plist 文件,因为 iTunes 不知道已经安装了任何应用程序,因此在同步时不会开始删除数据/设置。
答案2
我为您找到了更好的解决方案:
更改文件 /var/mobile/Library/Caches/com.apple.mobile.installation.plist 的名称,这是保存安装哪些应用程序的详细信息的文件,就像您说的。您只需更改为 com.apple.mobile.installation2.plist 即可。
iPhone 将几乎立即创建一个新文件(也许您需要启动邮件或 iTunes 等程序)...
创建新文件后,删除它并将原始的“com.apple.mobile.installation2.plist”重命名为原始名称(删除“2”)
甚至不需要重启手机,只需打开一些程序和设置、短信应用程序和 Safari,手机会卡住一点,好像正在加载某些东西,几分钟后你就会看到你的应用程序返回并且一切又恢复正常。iTunes 也可以更新。所有程序设置都会重新出现在设置页面上。
答案3
您最终可以尝试通过以下方式将 iPhone 应用程序传输到 iTunes 资料库复制翻译(据我所知,无需越狱)。传输后,将您的 iPhone 与 iTunes 同步,看看问题是否已解决。
答案4
这可能不是你想要的解决方案,但我也遇到了同样的情况,我不得不恢复固件,然后恢复我上次的备份。然后一切又恢复正常了