【问题标题】:How an iOS app is installed on a deviceiOS 应用程序如何安装在设备上
【发布时间】:2013-12-18 15:11:47
【问题描述】:

我有兴趣了解 iOS 应用如何在设备上安装的技术细节。 让我解释一下我的情况,

  • 我的应用程序的 .ipa 和 .plist 在服务器上。我制作了一个使用 itms-services 指向 .plist 文件的下载网页。
  • 我尝试在我朋友的 iPhone 上安装该应用程序,该应用程序已添加到项目的配置文件中。
  • 应用下载到他的设备,但永远处于等待状态。

我想知道一个应用程序是如何安装的,它是否被添加到队列中?如果一个有安装问题的应用程序无法安装,这对我要安装的其他应用程序有何影响。更具体地说,我想知道“等待”状态是什么意思

这个问题不仅出现在我朋友的 iPhone 上,在我的 iPhone 上也出现。但是,我的 iPhone 有一个更严重的问题,我无法安装任何应用程序,因为所有应用程序都进入了等待状态。

我朋友的 iPhone (iPhone 5S) 装有 iOS 7.0.4,我的 iPhone 4S 装有 iOS 7.0.3。

编辑 03/12/13 - 09:30

这是尝试安装期间的 iPhone 配置实用程序控制台输出。

... itunesstored[102] <Warning>: LaunchServices: installing placeholder for **.***.****.***********
... installd[62] <Notice>: 0x2c3000 handle_install_for_ls: Install of "/var/mobile/Library/Caches/com.apple.itunesstored/AppPlaceholders/4703876283909900519.app" requested by itunesstored
... installd[62] <Notice>: 0x2c3000 MobileInstallationInstall_Server: Installing app **.***.****.***********
... installd[62] <Notice>: 0x2c3000 install_application: Installing placeholder
... installd[62] <Notice>: 0x2c3000 MobileInstallationInstall_Server: Staging: 0.07s; Waiting: 0.00s; Installation: 0.24s; LS Sync: 0.00s; Overall: 0.38s
... filecoordinationd[128] <Warning>: sandboxing denied subscription to progress on category **.***.****.*********** (bundle id (null), ******-****-*****-*****-*********)

我猜 沙盒拒绝订阅类别进度部分和 (bundle id (null) 是相关错误,但我在 Google 上找不到任何有关它们的信息,有什么想法吗?

编辑 03/12/13 - 09:39

我还想补充一点,对于我尝试从 iPhone 上的 AppStore 安装的任何应用程序,我都会遇到同样的错误。

编辑 03/12/13 - 09:53

此外,该应用很好通过临时安装在运行 iOS 5.1.1 的旧 iPad 上。

编辑 03/12/13 - 16:18

先在 iTunes 中备份,然后进行设置 -> 重置 -> 删除所有内容和设置,应用安装成功!在此之前,我的朋友和我都不能安装任何应用程序(也不能安装我们的应用程序),但现在我们都可以在我们的手机上安装我们的应用程序或任何其他应用程序。 由于这不是一个理想的解决方案,我不知道问题是什么,我不知道“Waiting... 的真正含义是什么,我想留下这个问题。

【问题讨论】:

  • 由于您目前正在使用网络下载 - 您是否也尝试过使用 iPhone 配置实用程序在有问题的设备上完成该任务?
  • 谢谢,我没用过那个工具,我试试看。
  • 它是安装应用程序的最可靠方法。我见过许多其他方法都失败了,但从来没有失败过(如果配置等操作正确)。但是请确保您在 mac 上使用它,因为 windows 版本有时确实会失败,而 mac 版本则不会。

标签: ios xcode ios7


【解决方案1】:

通常,如果通过 Web 进行的即席安装失败,原因可能是 ipa 设置无效、权利设置无效或互联网连接超时。

我会检查您在 xcode 中使用的权利设置。允许获取任务应设置为 false。

如果它没有权利我会登录到 iTunes Connect,请确保您的分发配置文件设置了正确的设备。删除您的本地分发配置文件,从 iTunes Connect 下载配置文件并重新安装到您的钥匙串中。这是为了避免仍然引用旧配置文件的机会。

安装 ipas 的一种快速简便的方法是使用 Paul 所说的 iphone 配置工具。我认为小牛队有一个错误,但现在可能会修复。在最坏的情况下,您可以通过管理器将 ipa 拖放到设备中。

【讨论】:

  • 是否需要设置权利?我没有在 Code Signing -> Code Signing Entitlements 下列出任何内容。 (根据我在docs 中看到的,它只在特殊情况下使用。
  • 我看到我的配置文件中的 get-task-allow 没问题,因为它是假的。
  • 嗨,保罗,是的,你是对的,你不需要权利文件。只是以防万一你有一个。我还将检查 plist 是否已正确创建。有无数次我错误地设置了标题。此外,如果它是捆绑 ID 问题,我会确保捆绑也正确指向您的分发配置文件。
【解决方案2】:

我个人使用iResign 使用正确的配置文件退出 ipa。 https://github.com/maciekish/iReSign

这使我不必不断更改 xCode 项目中的配置文件并构建新存档。 ipa 可以多次辞职。

我建议在签署文件之前查看配置文件,方法是在文本编辑器中打开它,并确保文件中包含您尝试安装应用程序的设备的 UDID。

一旦你有了 ipa,使用Beta Builder 来生成 plist 文件以及可以上传到 ftp 的漂亮 html 文件。 http://www.hanchorllc.com/2010/08/24/introducing-ios-beta-builder/

因此,用户现在只需访问手机上的网址即可下载应用程序。

除了您的互联网连接中断之外,您不应该对这种方法有任何问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-06
    • 1970-01-01
    • 2014-09-30
    • 1970-01-01
    • 2019-12-01
    • 2015-10-10
    • 1970-01-01
    相关资源
    最近更新 更多