代码签名错误:应用程序代码验证失败

时间:2012-04-02 23:43:35

标签: ios xcode osx-lion

我是iOS开发的新手,我有一个应用程序全部设置并准备分发,但我似乎每次只在我的DEVICE上运行应用程序时出现此错误,iOS模拟器工作得很好。下面是完整的错误:

  

应用程序无法进行代码签名验证。签名无效,包含不允许的权利,或者未使用iPhone分发证书签名。 (-19011)

这是整个日志:

Validate "/Users/masonsocha/Library/Developer/Xcode/DerivedData/Multibrowser-brgeiknbjgrywwehhohafjwxjqnk/Build/Products/App Store-iphoneos/Multibrowser.app"
    cd /Users/masonsocha/Desktop/Apps/MultiBrowser
    setenv PATH "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
    setenv PRODUCT_TYPE com.apple.product-type.application
    /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/Validation "/Users/masonsocha/Library/Developer/Xcode/DerivedData/Multibrowser-brgeiknbjgrywwehhohafjwxjqnk/Build/Products/App Store-iphoneos/Multibrowser.app"

warning: Application failed codesign verification.  The signature was invalid, contains disallowed entitlements, or it was not signed with an iPhone Distribution Certificate. (-19011)
Executable=/Users/masonsocha/Library/Developer/Xcode/DerivedData/Multibrowser-brgeiknbjgrywwehhohafjwxjqnk/Build/Products/App Store-iphoneos/Multibrowser.app/Multibrowser
codesign_wrapper-0.7.10: using Apple CA for profile evaluation
AssertMacros: trust_result == kSecTrustResultUnspecified,  file: codesign_wrapper.c, line: 594
AssertMacros: profile,  file: codesign_wrapper.c, line: 918
codesign_wrapper-0.7.10: Failed to load provision profile from: /Users/masonsocha/Library/Developer/Xcode/DerivedData/Multibrowser-brgeiknbjgrywwehhohafjwxjqnk/Build/Products/App Store-iphoneos/Multibrowser.app/embedded.mobileprovision
 - (null)

我已经尝试缩短项目名称的长度,这对Xcode 4.3.2我目前正在使用OSX Lion没有帮助。我整晚都在拔头发,请帮帮忙!

6 个答案:

答案 0 :(得分:19)

可能是xcode选择了一个开发配置文件来用它来签名代码。

确保它使用分发配置文件

按下项目,在Build Settings中 - >代码签名部分扩展代码签名身份 - >发布 - >确保Any iOS SDK指的是分发配置文件。

答案 1 :(得分:9)

我有完全相同的问题..

转到Keychain Access

  1. 确认您已正确设置公钥和私钥。这是一个很好的参考https://developer.apple.com/legacy/library/technotes/tn2250/_index.html

  2. 我之前调整了我的钥匙串证书首选项以使Outlook工作,但这几乎搞砸了XCode代码签名..

  3. 我将这些设置为"最佳尝试"设置(见截图)验证工作正常

    enter image description here

答案 2 :(得分:3)

你可以解决它没有将配置文件选择留给xcode。在项目设置中手动选择正确的版本配置文件,它将通过。

答案 3 :(得分:2)

即使检查了所有签名内容,我也遇到了同样的问题。我有旧的"可以调试"在我的权利文件中设置。将其切换为get-task-allowed可以解决问题。 Apple有instructions on how to debug signing issues

答案 4 :(得分:1)

我遇到了这个问题,但发现上述问题都没有解决。最后,我通过Apple的技术说明(https://developer.apple.com/legacy/library/technotes/tn2250/_index.html)找到了解决方案。

我的案例中的具体问题是资产丢失或被隐藏(我没有找到哪个),但是在构建过程中的任何其他地方都没有将其标记为问题文件。我已经概述了我在下面发现的步骤。

  1. 归档构建,保存以进行临时部署。
  2. 导航到查找程序中的ipa,重命名为.zip。
  3. 双击取消归档,打开“Payload”文件夹
  4. 打开终端,输入以下内容:

    代码签名 - 验证-vvvv -R ='锚苹果通用和证书1 [field.1.2.840.113635.100.6.2.1]存在且(证书叶[field.1.2.840.113635.100.6.1.2]存在或证书叶[field.1.2.840.113635.100.6.1.4]存在)'/ path / to / your /app.app

  5. 不是输入/Path/to/your/app.app,而是将* .app文件从Payload文件夹拖放到终端中,确保命令末尾和文件名之间有空格,并点击返回。

  6. 我在输出中输入错误,说'密封资源丢失或无效',文件名称导致问题(以点开头,这可能是问题)。当我在XCode项目浏览器中搜索文件名时,我找到了该文件,但当我查看Finder时,它不在磁盘上。

    修复只是从XCode项目浏览器中删除文件,错误就消失了。我肯定会对遇到类似问题的人说 - 通过Apple的技术说明。他们的措辞有点严厉,但解决方案很可能就在那里。

答案 5 :(得分:0)

我遇到了同样的问题并通过以下方式解决了这个问题: