iOS9:“无法下载应用程序”

Posted

技术标签:

【中文标题】iOS9:“无法下载应用程序”【英文标题】:iOS9: "Unable to Download App" 【发布时间】:2015-12-17 03:38:18 【问题描述】:

我们正在为公司开发一个内部 ios 应用。 我们创建表单的本地分发链接

itms-services://?action=download-manifest&url=https://INTERNAL-PATH/manifest.plist

它运行良好很长时间,包括 iOS8 和 iOS9 的所有测试版。

但是现在对于更新到官方 iOS9 的每台设备,当尝试从上面的链接安装时,我们都会看到这个对话框:

我已经捕获了从按“安装”直到收到此错误的日志。它显示在这里。从一开始就有一个 suspicious "ios8fix" 我们没有放,其中一个失败输出声称 BundleValidator: Failed bundleIdentifier: MY_APP_ID.ios8fix does not match expected bundleIdentifier: MY_APP_ID

请注意,“创建新的配置文件”不是一个好的解决方案,因为我正在尝试通过现有应用分发更新。

我已经度过了一个愚蠢的一天(好吧。一整天)试图解决这个问题,如果有任何线索,我将不胜感激!

itunesstored[123] <W>: LoadExternalDownloadManifestOperation: Canceling failed manifest download for replace: MY_APP_ID.ios8fix
itunesstored[123] <W>: [Download]: Adding download(s): -4949958484440492382
itunesstored[123] <W>: LaunchServices: installing placeholder for <LSApplicationProxy: 0x148840860> MY_APP_ID.ios8fix <(null) *Not found in database*>
installd[47] <N>: 0x16e087000 -[MIClientConnection installPath:withOptions:completion:]: Install of "/var/mobile/Library/Caches/com.apple.itunesstored/AppPlaceholders/-4949958484440492382.app" type Placeholder requested by itunesstored (pid 123)
installd[47] <N>: 0x16e12f000 -[MIInstaller performInstallationWithError:]: Installing <MIInstallableBundle ID=MY_APP_ID.ios8fix; Version=8.38.5, ShortVersion=(null)>
installd[47] <N>: 0x16e12f000 -[MIContainer makeContainerLiveReplacingContainer:reason:withError:]: Made container live for MY_APP_ID.ios8fix at /private/var/mobile/Containers/Data/Application/A64E6947-B7E7-46A9-B517-4887AB890E97
installd[47] <N>: 0x16e12f000 -[MIContainer makeContainerLiveReplacingContainer:reason:withError:]: Made container live for MY_APP_ID.ios8fix at /private/var/mobile/Containers/Bundle/Application/A1ED6552-6C73-4DDE-8CE7-ED10F1BB0553
itunesstored[123] <W>: [Download]: Starting task: 4 with priority: 300 for download: -4949958484440492382 bundleIdentifier: MY_APP_ID.ios8fix in session: com.apple.itunesstored.default
installd[47] <N>: 0x16e12f000 -[MIInstaller performInstallationWithError:]: Install Successful; Staging: 0.00s; Waiting: 0.00s; Preflight/Patch: 0.00s, Verifying: 0.00s; Overall: 0.12s
itunesstored[123] <W>: LaunchServices: Creating installProgressForApplication:<LSApplicationProxy: 0x148ac35f0> MY_APP_ID.ios8fix (Placeholder) <file:///private/var/mobile/Containers/Bundle/Application/A1ED6552-6C73-4DDE-8CE7-ED10F1BB0553/-4949958484440492382.app> withPhase:3
itunesstored[123] <W>: LaunchServices: installPhaseFinishedForProgress: MY_APP_ID.ios8fix.InstallingPlaceholder - <NSProgress: 0x148a7a8c0> : Parent: 0x0 / Fraction completed: 0.0000 / Completed: 0 of 100   called, removing progress from cache
lsd[175] <W>: LaunchServices: Updating installPhase for parent <NSProgress: 0x127d3a430> : Parent: 0x0 / Fraction completed: 0.6000 / Completed: 60 of 100   to 3
ondemandd[192] <E>: Application with ID: MY_APP_ID.ios8fix was installed, but it doesn't appear to have a bundle URL, we are taking no action on this.
itunesstored[123] <W>: LaunchServices: updating placeholder for <LSApplicationProxy: 0x146eb9100> MY_APP_ID.ios8fix (Placeholder) <file:///private/var/mobile/Containers/Bundle/Application/A1ED6552-6C73-4DDE-8CE7-ED10F1BB0553/-4949958484440492382.app> with icons
installd[47] <N>: 0x16e12f000 -[MIClientConnection installPath:withOptions:completion:]: Install of "/var/mobile/Library/Caches/com.apple.itunesstored/AppPlaceholders/-4949958484440492382.app" type Placeholder requested by itunesstored (pid 123)
installd[47] <N>: 0x16e2d3000 -[MIInstaller performInstallationWithError:]: Installing <MIInstallableBundle ID=MY_APP_ID.ios8fix; Version=8.38.5, ShortVersion=(null)>
installd[47] <N>: 0x16e2d3000 -[MIInstallableBundle _refreshUUIDForContainer:withError:]: Data container for MY_APP_ID.ios8fix is now at /private/var/mobile/Containers/Data/Application/20871483-6F78-424D-8ED1-BA18BD2959BA
installd[47] <N>: 0x16e2d3000 -[MIContainer makeContainerLiveReplacingContainer:reason:withError:]: Made container live for MY_APP_ID.ios8fix at /private/var/mobile/Containers/Bundle/Application/D1ABD072-5949-452A-A20E-50F5C10310AA
installd[47] <N>: 0x16e2d3000 -[MIInstaller performInstallationWithError:]: Install Successful; Staging: 0.00s; Waiting: 0.00s; Preflight/Patch: 0.00s, Verifying: 0.00s; Overall: 0.06s
ondemandd[192] <E>: Application with ID: MY_APP_ID.ios8fix was installed, but it doesn't appear to have a bundle URL, we are taking no action on this.
SpringBoard[54] <W>: FBApplicationPlaceholder We received a nil BSCFBundle back, which means _CFBundleCreateUnique. Here's what -[NSFileManager attributesOfItemAtPath:error:] is giving us: (null)
        here's the error we got back (if any): Error Domain=NSCocoaErrorDomain Code=260 "The file “-4949958484440492382.app” couldn’t be opened because there is no such file." UserInfo=NSFilePath=/private/var/mobile/Containers/Bundle/Application/A1ED6552-6C73-4DDE-8CE7-ED10F1BB0553/-4949958484440492382.app, NSUnderlyingError=0x12a552020 Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory"
SpringBoard[54] <W>: -[FBBundleInfo _initWithBundleURL:] ERROR: Unable to create bundle at path: /private/var/mobile/Containers/Bundle/Application/A1ED6552-6C73-4DDE-8CE7-ED10F1BB0553/-4949958484440492382.app
ondemandd[192] <E>: An object with ID [0x12de8a220 <x-coredata:///AssetDownloads/tAC876614-AA9B-432E-9691-02EE36693D1013>] has already registered.
itunesstored[123] <W>: LaunchServices: Creating installProgressForApplication:<LSApplicationProxy: 0x148a553a0> MY_APP_ID.ios8fix (Placeholder) <file:///private/var/mobile/Containers/Bundle/Application/D1ABD072-5949-452A-A20E-50F5C10310AA/-4949958484440492382.app> withPhase:0
lsd[175] <W>: LaunchServices: Updating installPhase for parent <NSProgress: 0x127d3a430> : Parent: 0x0 / Fraction completed: 0.6000 / Completed: 60 of 100   to 0
<-- 19 seconds gap -->
itunesstored[123] <W>: [Download]: Download task did finish: 4 for download: -4949958484440492382
itunesstored[123] <W>: [ApplicationWorkspace] Installing download: -4949958484440492382 with step(s): Install
itunesstored[123] <W>: [ApplicationWorkspace]: Installing software package with bundleID: MY_APP_ID.ios8fix: bundleVersion: 8.38.5 path: /var/mobile/Media/Downloads/-4949958484440492382/-5671360055536325805
itunesstored[123] <W>: BundleValidator: Failed bundleIdentifier: MY_APP_ID.ios8fix does not match expected bundleIdentifier: MY_APP_ID
itunesstored[123] <W>: [ApplicationWorkspace]: Bundle validated for bundleIdentifier: MY_APP_ID.ios8fix success: 0
itunesstored[123] <W>: LaunchServices: Uninstalling placeholder for app <LSApplicationProxy: 0x14884ffc0> MY_APP_ID.ios8fix (Placeholder) <file:///private/var/mobile/Containers/Bundle/Application/D1ABD072-5949-452A-A20E-50F5C10310AA/-4949958484440492382.app>
itunesstored[123] <W>: LaunchServices: Uninstalling app <LSApplicationProxy: 0x14884ffc0> MY_APP_ID.ios8fix (Placeholder) <file:///private/var/mobile/Containers/Bundle/Application/D1ABD072-5949-452A-A20E-50F5C10310AA/-4949958484440492382.app>
installd[47] <N>: 0x16e087000 -[MIClientConnection uninstallIdentifiers:withOptions:completion:]: Uninstall requested by itunesstored (pid 123) with options: 
    
installd[47] <N>: 0x16e087000 -[MIUninstaller _uninstallBundleWithIdentifier:error:]: Uninstalling identifier MY_APP_ID.ios8fix
installd[47] <N>: 0x16e087000 -[MIUninstallNotifier performRemovalWithCompletionBlock:]: Destroying container with identifier MY_APP_ID.ios8fix at /private/var/mobile/Containers/Bundle/Application/D1ABD072-5949-452A-A20E-50F5C10310AA
installd[47] <N>: 0x16e087000 -[MIUninstallNotifier performRemovalWithCompletionBlock:]: Destroying container with identifier MY_APP_ID.ios8fix at /private/var/mobile/Containers/Data/Application/20871483-6F78-424D-8ED1-BA18BD2959BA
itunesstored[123] <W>: LaunchServies: No app bundle to remove for MY_APP_ID.ios8fix
lsd[175] <W>: LaunchServices: Updating identifier store
itunesstored[123] <W>: LaunchServices: clearing created progress for MY_APP_ID.ios8fix
itunesstored[123] <W>: [ApplicationWorkspace]: Uninstalling application placeholder for bundleIdentifier: MY_APP_ID.ios8fix; success: 1
itunesstored[123] <W>: [ApplicationWorkspace]: Failed to install application: MY_APP_ID.ios8fix; /var/mobile/Media/Downloads/-4949958484440492382/-5671360055536325805; Error Domain=SSErrorDomain Code=143 "(null)"
itunesstored[123] <W>: [ApplicationWorkspace] Install complete for download: -4949958484440492382 result: Failed
itunesstored[123] <W>: [Download]: Fail download: -4949958484440492382 after error: Error Domain=SSErrorDomain Code=143 "(null)"

【问题讨论】:

嗨,我和你有同样的问题。你能帮我点击安装时如何获取日志文件吗? 在 Xcode 中打开窗口 > 设备 > 您的设备。如果您没有看到日志,则需要单击底部的小三角形。 【参考方案1】:
MY_APP_ID.ios8fix

您的捆绑包标识符现在必须正确。

这是为了解决 8.2 中的一个老问题而完成的。我的应用程序中也有一些“ios8fix”扩展,这破坏了 9.0 GM 的 OTA。是的,它通过了所有的测试版。

因此请检查您的 manifest.plist 以确保它确实与您的实际应用程序 ID 匹配...更正该 plist 条目。

顺便说一句,您可以使用任何文本编辑器轻松更新该 plist。

我的 itms 入口指向一个我也在公司任职的 plist,这是整个旧 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">
<plist version="1.0">
<dict>
    <key>items</key>
    <array>
        <dict>
            <key>assets</key>
            <array>
                <dict>
                    <key>kind</key>
                    <string>software-package</string>
                    <key>url</key>
                    <string>http://removed.cachefly.net/noname.ipa</string>
                </dict>
            </array>
            <key>metadata</key>
            <dict>
                <key>bundle-identifier</key>
                <string>dupuy.robert.APPNAME.ios82fix</string>
                <key>bundle-version</key>
                <string>1.0.7</string>
                <key>kind</key>
                <string>software</string>
                <key>title</key>
                <string>Appname 1.0.7</string>
            </dict>
        </dict>
    </array>
</dict>
</plist>

看到包标识符了吗? dupuy.robert.APPNAME.ios82fix 是假的! 这是作为对较早的苹果问题的修复而添加的。

但从 GM 9.0 开始 - 捆绑包标识符必须严格正确。

所以要么更正你的 plist,要么指向一个新的正确 plist。这些 plist 只是简单的文件....应该很容易解决!在我的情况下,“dupuy.robert.APPNAME.ios82fix”刚刚更改为“dupuy.robert.APPNAME”,并且重新保存了 plist。虽然如果您的网络服务器缓存了 plist,如果它继续提供旧的 plist,那又是一个令人头疼的问题,但如果您可以重命名文件,那就更好了。

【讨论】:

你是对的。我自己也从 meta.stackexchange.com/questions/266528/cannot-update-app 学到了同样的东西。对我不利,实施此修复的人已经离开公司,所以我没有人问:( 是的,这也解决了我的问题。由于 iOS 8 错误,我不得不在每次更新后更改捆绑包 ID。【参考方案2】:

这似乎是 iOS9 中的一个错误,它会缓存任何以前的 OTA 错误。

我通过删除设备上的应用程序、更改manifest.plist 然后重新启动设备的组合使我的安装再次运行。这似乎清除了缓存并安装了应用程序。

【讨论】:

Michael,就我而言,关闭 Safari 浏览器并打开应用企业应用商店页面就足够了,我不需要重新启动设备。可能它还从我的缓存中清除了一些东西。但是重新加载页面不起作用。【参考方案3】:

查看您的 manifest.plist。

我遇到了同样的问题,并通过三天的努力解决了它。 对于 iOS8 设备,您必须使用旧的 plist。对于 iOS9 设备,您必须使用 new(Xcode7 made) plist。这是标准。 ipa 文件是一样的(Xcode7 Archive build)。

新的 plist 需要两个安装映像。 57x57.jpg 和 512x512.jpg。你也必须安排他们。 Bundle Identifier 必须正确(与 Xcode7 > TARGETS > General > Bundle Identifier 相同)。

我测试了 4 台设备。

iPad Air (iOS9.0.1) -> OK (by iOS9 plist)

iPad 3 (iOS8.4.1) -> OK(通过 iOS8 plist)

iPad 2 (iOS9.0) -> OK(通过 iOS9 plist)

iPad mini (iOS9.0) -> OK (by iOS8 plist)

OTA 安装过程会使您的设备混乱。在这种情况下,重新启动很有帮助。希望有帮助。

【讨论】:

你如何获得那些 plist 文件?它们不再由 XCode 创建。我在网上找到了一个并对其进行了调整,它可以在带有 8.4.1 和 iPad 4 的 iPad Air 上完美运行,但我无法在带有 8.4 的 iPad 2 上安装。?也没有 9.0.1 和 9.1.0 的 iPhone 6 的相同敌人 :( 使用 Xcode7,您可以在存档构建过程中创建一个新的 manifest.plist 文件。 OTA 安装失败有时取决于应用程序的代码和数据。所以,删除安装图标并重新启动并尝试......再试一次......祝你好运。 终于找到了可以在 XCode 中创建该 ***** plist 文件的复选标记!感谢您的提示!它称为“包括用于无线安装的清单”,位于您从 XCode 7 导出存档时循环浏览的页面之一的底部。【参考方案4】:

同样的问题,重启设备就解决了。

步骤:

    删除旧APP

    重启设备

    安装新APP

【讨论】:

【参考方案5】:

以前我已更改 ipa 名称和 Bundle 标识符以在 ios 8.2 中下载。现在在 ios 9 中只使用了原始的 ipa 名称和以前的包标识符名称。 它有效。

【讨论】:

【参考方案6】:

我遇到了同样的问题,但在我的情况下,应用程序名称有一个空格,删除空格就很好了。

【讨论】:

【参考方案7】:

将新的图像属性 display-imagefull-size-image 添加到 .plist 文件后,我的问题得到了解决:

                <dict>
                    <key>kind</key>
                    <string>software-package</string>
                    <key>url</key>
                    <string>linktoyouripa</string>
                </dict>
                <dict>
                    <key>kind</key>
                    <string>display-image</string>
                    <key>url</key>
                    <string>someimage.png</string>
                </dict>
                <dict>
                    <key>kind</key>
                    <string>full-size-image</string>
                    <key>url</key>
                    <string>someimage.png</string>
                </dict>

【讨论】:

以上是关于iOS9:“无法下载应用程序”的主要内容,如果未能解决你的问题,请参考以下文章

我可以让某些设备无法下载应用程序吗?

“无法下载应用程序......此时无法安装” - adobe phonegap build ios

“无法下载应用程序。目前无法安装 <Appname>”

iOS 企业 OTA 分发无法下载应用程序

企业分发在 iPhone 4 上“无法下载应用程序”但在 iPhone5 上有效

iOS9 App Thinning(应用瘦身)功能介绍