我有两个iphone设备(4s和5)连接到我的电脑,我试图在两个设备上安装一个应用程序。它在iphone 5上安装得很好,但它给出了一个错误“应用程序无法验证”。在试图安装到iPhone 4s设备时。

两个设备的udid都已添加到为应用程序生成的配置配置文件中。

另外,补充说明一下,我刚刚在我的4s设备上把我的iphone版本升级到8.1.3。但我不确定这个错误是否与此有关。

任何帮助在这方面将非常感激。我已经被这个问题困扰了一段时间了。

编辑:

我刚刚把它连接到另一个iPhone设备上,问题似乎又出现了。基本上,这意味着应用程序,出于某种原因,只安装在我已经使用了一段时间的手机,而不是在任何其他手机。同样,我非常确定配置配置文件包含所有这3个设备的udid。


当前回答

我经常遇到这个问题。我不确定这是否是问题所在,但我认为,当xCode看到有一个应用程序与应用程序的捆绑标识符相同时,我试图安装,它不允许我。所以,我不得不删除旧的,并试图安装,它工作。然而,有时出于测试目的,我需要同一应用程序的多个版本,在这种情况下,我会改变包标识符并尝试安装。只有当我使用通配符配置文件时,它才有效。

其他回答

可能已经发现了…从设备上删除应用程序对我来说是有效的,就像其他人之前提到的那样(谢谢!)

我认为原因是设备上的应用程序实际上是用一个单独的供应配置文件签名的,特别是在我的情况下是一个分发配置文件。

刚刚也遇到了同样的问题,我发现问题是证书过期了。 我的应用程序通过firebase分发(AdHoc),几天前应用程序工作得很好。 今天我意识到我无法安装它,因为“应用程序无法验证”。

最后我意识到我用于应用程序签名的证书已经过期2天了。 您需要再次上传它,然后才能安装它。

给那些没有使用RubyMotion并且认为删除应用是不可接受的人(比如,你想做升级测试)。看看下面这些来自苹果的文档:

https://developer.apple.com/library/ios/technotes/tn2319/_index.html

看起来他们在8.1.3修改了一些东西来检查这个新规则。

修复

“[添加]第二个圆括号中记录的已安装应用程序的application-identifier值,到正在安装的应用程序的前一个application-identifier授权数组值(通过重新命名或重新构建它),并请求新的特殊配置配置文件,如下所示。”

<key>previous-application-identifiers</key>
<array>
    <string>{Your Old App ID Prefix}.YourApp.Bundle.ID</string>
</array>

编辑:

为了做到这一点,您需要特殊的配置文件。你可以向苹果请求这些: “要启用与以前的应用程序标识符授权的签名,需要新的特殊配置文件,可以通过访问联系美国页面并请求它们来获得。”(从上面链接的文档)。

应用程序无法验证”,在您的设备中可能已经安装了具有相同bundle标识符的应用程序。

这么简单的解决方案只是删除应用程序,再试一次.. …

工作测试方案,无需删除应用程序:

看起来AppStore分发配置文件或iOS分发证书具有特殊权限,“无法验证…”问题不适用于它们。它们将始终覆盖以前的证书。

换句话说:AppStore发布将成功安装,即使已经安装(测试、临时或企业)的应用程序已经由不同团队的证书签署。

如果你很幸运,并且之前已经将应用上传到了你有问题的证书所拥有的AppStore帐户,那么事情就很简单了:只需从AppStore下载并安装应用。

当它安装-应用程序证书将与您想要测试的证书相同,问题就会消失。

如果你的应用还没有在AppStore上,iTunesConnect测试版就可以拯救你了:

免责声明:我没有测试这个,但由于cert和prev与AppStore发布相同,我打赌它是有效的:

使用AppStore配置文件(iOS分发证书)存档应用,并上传到iTunesConnect(上传到与配置文件中包含的开发团队相同的帐户,而不是你想运行的帐户)。 邀请拥有你想要运行的设备的人(你自己?)进行beta测试。 从iTunes connect beta下载并安装应用程序。 现在可以安装测试版本了。