Xcode 3.2中的代码签名错误

31

在升级到iPhone OS 3.1和Xcode 3.2之前,我有一个完全可用的构建环境。现在,当我尝试构建时,出现以下问题:

  

代码签名错误:配置文件“FooApp test”指定应用程序标识符“no.fooapp.iphoneapp”,但与当前设置“TGECMYZ3VK.no.fooapp.iphoneapp”不匹配

问题在于Xcode以某种方式认为“FooApp Test”配置文件指定了应用程序标识符“no.fooapp.iphoneapp”,但实际上并非如此。

在组织者中(以及iPhone开发人员门户网站上),应用标识符被正确地视为'TGECMYZ3VK.no.fooapp.iphoneapp'。

另外,在项目级别的构建选项中设置配置文件时,Xcode能够正确地识别应用标识符,但是当我进入目标时,无法选择任何有效的配置文件。

可能是什么原因导致了这个问题?

更新:我尝试创建了一个新的配置文件,但仍然没有成功。我也试着简单地将Info.plist中的应用标识更改为“no.fooapp.iphoneapp”。构建成功,但现在我从组织者处得到一个错误:

  

可执行文件使用无效的权限签名。您应用程序的代码签名权限文件中指定的权限与您的配置文件中指定的不匹配。(0xE8008016)。

这似乎合理,因为配置文件仍然具有“TGECMYZ3VK.no.fooapp.iphoneapp”应用标识符。

我还双重检查了钥匙串中的所有证书都是有效的。

所以我的问题是如何让Xcode看到正确的应用标识符?

更新:正如下面所述,解决问题的方法似乎是删除所有配置文件、证书等,制作新的证书/配置文件并重新安装它们。如果有其他解决方案,欢迎提供。 :)

16个回答

21

在构建菜单中执行“清除所有目标”,我需要手动从手机上删除配置文件,然后重新构建应用程序。

这个操作在设置菜单下的常规->配置文件中执行。

当我换了新的 Mac 电脑时,我也遇到了这个问题。不要担心,你会解决它的。


16

好的,像许多代码签名问题一样,删除所有的预配资料、证书等,然后再次撤销并生成这些内容,结果解决了这个问题。我甚至创建了一个新的bundle identifier、应用程序标识符等,现在AdHoc分发又可以正常工作了。


3
这个证书的事情很烦人。苹果从来没有成功地完成这项工作。 - Duck
如果这个方法不起作用,你可以尝试删除xcproj中的xcuserdata文件夹。 - vinzenzweber

5
此外,请确保在项目配置的CODE_SIGN_ENTITLEMENTS中添加对“dist.plist”授权文件名的引用。

5

检查构建目标和主应用程序的信息中的代码签名授权,如果任何一个代码签名授权为“是”,则删除它。


5
我昨天遇到了同样的错误。我尝试了其他答案中提供的各种重置程序,但都没有成功。最终我还

  • 重启了我的Mac电脑
  • 重启了我的iPhone手机
  • 使用XCode从手机中删除了所有的iPhone配置文件
  • 从我的Mac电脑中删除了所有的配置文件(对于我来说是~/Library/MobileDevice/Provisioning Profiles)
  • 还有什么?删除了构建文件夹,重新启动了XCode,安装了3.1.2 SDK的更新,献祭了一只鸡。

看哪,现在它能用了,错误已经消失了。这真是一个神秘的领域。


你知道吗,又发生了。感谢苹果浪费了我一个小时的时间... - Simon Woodside
1
我曾经遇到过类似的情况。我去了组织者 -> 配置文件(在左侧)-> 点击了“刷新”!看起来它起作用了。顺便说一句,“献祭了一只鸡”哈哈 - Ravi

4
在XCode中,在“组和文件”窗格中,展开“目标”,然后双击您的应用程序目标。
这将为您的目标带来信息面板。在“构建”部分中,检查“代码签名”部分是否有任何旧配置文件。在升级到新版本的sdk和iphone os之后,我经常遇到这种情况。

问题是,当我尝试选择之前有效的应用程序配置文件时,却无法选择它。Xcode似乎“认为”配置文件中的应用程序标识符是“no.fooapp.iphoneapp”,而不是正确地识别为“TGECMYZ3VK.no.fooapp.iphoneapp”。在组织者中查看配置文件时,应用程序标识符正确显示为“TGECMYZ3VK.no.fooapp.iphoneapp”。 - quux

2
如果您使用的是Xcode 4.3,可以采用以下快速解决方法。
在Xcode中,进入“项目设置(Project Settings) > 我的目标(MyTarget) > 概述(Summary)选项卡”,在底部找到名为“启用许可证(Enable entitlements)”的复选框。取消勾选该选项后,错误信息将消失。

1

在这个问题上我被卡了很长时间,后来重新检查设置时发现我已经颠倒了“代码签名身份”和“任何iPhone OS设备”的条目。- 我发现这种情况发生的线索是:

  1. 从手机上删除所有配置文件
  2. 构建并运行

此时,Xcode会尝试为手机(设备)提供服务。

  1. 检查手机以查看添加了哪个配置文件。

由于我将所有配置文件都加上了“AdHoc”、“Development”或“AppStore”前缀,因此我立即看到安装过程正在将开发配置文件放在设备上而不是AdHoc配置文件。


1
设备可能不在列表中。尝试修改您的配置文件。

1
在 Resources/Entitlements.plist 文件中有一个布尔值叫做 "get-task-allow",如果它没有被选中,请将它打开。这个方法解决了我的问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接