504

试图重建一个昨天还在工作的应用程序。收到配置文件已过期的消息,因此我将其从 iPod 和 iTunes 中删除。当我选择一个新的配置文件(标识符中带有 * 的配置文件)时,我现在收到一个错误:

代码签名错误:找不到供应配置文件(长字符串)。

我错过了什么?我查看了相关问题,并没有看到这种情况。

4

16 回答 16

859

有时您的 Xcode 项目文件会变得混乱,特别是如果您有一个旧项目并且首先使用旧版本的 Xcode/iPhone SDK 创建它。

您需要做的是在文本编辑器中打开项目文件,从错误中搜索“长字符串”并手动删除该行。

事实上,您应该继续删除任何指向任何配置文件的行。然后在 Xcode 中重新打开项目,转到设置并重新选择您的新配置文件。这在大多数情况下都可以解决类似的问题。

指向配置文件的行将如下所示:

PROVISIONING_PROFILE = "487F3EAC-05FB-4A2A-9EA0-31F1F35760EB";
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "487F3EAC-05FB-4A2A-9EA0-31F1F35760EB";
于 2009-11-19T03:39:04.423 回答
129

这是一个对我有用的更简单的解决方案,不需要手动编辑项目文件:

在 Xcode 中,在“组和文件”窗格中,展开“目标”并双击应用程序的目标。这将打开目标的信息窗格。在“构建”部分,检查“代码签名”部分是否有任何旧配置文件并替换为正确的配置文件。

请注意,这与双击您的项目图标并从那里更改配置文件不同。相当惊人:)

奥里

于 2010-06-07T09:22:30.700 回答
77
  1. 项目&目标属性->“不要编码符号”->确定->cmd+S(或cmd+B);
  2. 项目和目标属性->“您的配置文件”->确定

  3. 一切都恢复正常!

于 2011-05-18T21:58:01.700 回答
11

我同意布拉德的回答,你可以通过手动编辑你的目标/项目来解决这个问题,删除任何这样的行:

PROVISIONING_PROFILE = "487F3EAC-05FB-4A2A-9EA0-31F1F35760EB";
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "487F3EAC-05FB-4A2A-9EA0-31F1F35760EB";

但是,在 Xcode 4.2 和更高版本中,有一种更简单的方法可以访问此文本并选择和删除它。在左侧的 Project Navigator 中,选择您的项目(Project Navigator 的最上面一行)。现在只需选择查看 > 版本编辑器 > 显示版本编辑器。这会将您的项目显示为文本,您可以在 Xcode 的编辑器窗格中搜索 PROVISIONING 并删除麻烦的行。

于 2012-11-23T17:34:25.380 回答
7

刚刚看到这个问题的一个变体:我按照上面布拉德史密斯的笔记进入了 project.pbxproj 文件,除了在这种情况下,所有的 PROVISIONING_PROFILE 行似乎都是正确的,没有出现 Xcode 不能出现的“坏”配置文件字符串找不到。

但是,修复方法是相同的:删除 project.pbxproj 中的所有 PROVISIONING_PROFILE 行,即使理论上它们看起来“不错”,然后在 Xcode 中重新打开项目。

于 2011-05-04T03:24:52.570 回答
5

要完全在终端中实现 Brad 的解决方案,请使用这些命令

  1. cd [Xcode project parent]
  2. vi [Xcode project name].xcodeproj/project.pbxproj
  3. /[offending provisioning profile] [Enter]
  4. dd- 删除整行
  5. 按 n 直到找不到更多
  6. Ctrl+x 保存并关闭
于 2012-04-17T18:48:02.567 回答
4

在我的情况下,问题是通过打开 Window -> Organizer,选择我的设备并删除右侧“Provisioning”面板下的旧 Provisioning Profile 来解决的。旧的已经标有红色的“x”符号,但 iPhone 仍在使用它。

除了那个配置文件,新的配置文件也出现了(同名),在简单地重新启动应用程序后,我让它运行顺利。

于 2010-11-10T12:01:59.437 回答
4

只花了一个小时左右,在布拉德的建议和一些额外的改变的帮助下,一切都奏效了。

我使用以下方法完成了此操作:10.7.3、Xcode 4.3.2、iOS 5.1 顺便说一句。

1)右键单击myapp.xcodeproj并选择包内容

2)project.pbxproj用文本编辑器打开(不推荐使用textedit,因为它可能会搞砸格式)

3)一直向下滚动,直到找到/* Begin XCBuildConfiguration section */

4) 请注意,您有一个调试和发布部分

CODE_SIGN_IDENTITY5 )在发布部分看一下"CODE_SIGN_IDENTITY[sdk=iphoneos*]"它应该看起来像这样:

CODE_SIGN_IDENTITY = "iPhone Distribution: MyCompany LLC";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution: MyCompany LLC";

6)看看,PROVISIONING_PROFILE他们"PROVISIONING_PROFILE[sdk=iphoneos*]"应该是这样的:

PROVISIONING_PROFILE = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX";
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX";

这应该与您在 Xcode 中的配置文件匹配。要查看它们是否匹配,请打开 Xcode > Window > Organizer > Devices > Provisioning Profiles > 右键单击​​配置文件 > 在 Finder 中显示 > .mobileprovision 的文件名是您的配置文件 ID。

7) 向下滚动project.pbxproj并找到发布部分的第二个实例。发布部分的第二个实例应该以评论结尾/* End XCBuildConfiguration section */

8) 确保第二部分与第一部分匹配,以便CODE_SIGN_IDENTITY, "CODE_SIGN_IDENTITY[sdk=iphoneos*], 和PROVISIONING_PROFILE都被填写。

于 2012-04-14T09:01:36.640 回答
2

我将提出一个建议,因为还没有人说过:请在您开始修改它的内容之前,请备份您的整个 .xcodeproj 文件。搞砸项目文件并且没有备份将导致非常非常不愉快的体验。

能够退出编辑可能是天赐之物。

于 2011-08-17T17:39:43.653 回答
1

The solution of Brad Smith worked for me, but I also had to remove the CODE_SIGN_IDENTITY field to make it work.

于 2012-11-19T15:59:34.293 回答
1

我刚刚在我的 Xcode 4 中遇到了这个问题。要修复它,您需要将所有正确的规定都放入 Debug 和 Release 配置中。

我试图提交(通过归档)我的应用程序。所以我只是将 Debug 条款更改为“Don't Code Sign”,并将 Release 条款更改为我的应用程序的 appstore 条款。

这可以修复它并使我能够正常存档。希望有帮助。

于 2011-08-19T00:42:16.577 回答
1

在任何 iOS SDK 下选择代码签名中空白的行,然后选择正确的证书。

于 2011-11-18T15:12:12.163 回答
0

至少在 Xcode 5 中,这是为我解决问题的东西:

在配置文件下,选择有问题的配置文件,然后在下拉菜单中选择一个有效的配置文件。

在此处输入图像描述

于 2013-09-26T01:26:06.873 回答
0

我遇到了问题,因为我用一些新设备更新了我的 AdHoc 配置文件,以便在 TestFlight 上使用。假设这是因为 Xcode 在项目或目标的代码设计构建设置中对您的配置文件有旧的引用。我修复我的方法是:

  1. 转到目标构建设置和项目构建设置,在代码签名下将所有配置文件更改为其他内容。
  2. 转到管理器中的设备/配置文件删除有问题的配置文件,然后单击右下角的刷新按钮。
  3. 返回到目标和项目构建设置,并将您的配置文件设置为适当的(希望)新刷新的配置文件。
于 2013-06-25T20:16:27.933 回答
0

不幸的是,这种方法对我不起作用。但这里有一个对我有用的修复(要让它工作,你需要一个在 Subversion 上的工作项目文件):

我确实回滚到我的项目文件的工作版本。由于无法使用 Xcode 进行还原(Xcode 4 的源代码控制中的“还原”选项在哪里?) - 我使用了 Tortoise、我的 Windows 机器和本教程(http://tortoisesvn.net/docs/nightly/TortoiseSVN_en /tsvn-howto-rollback.html)回滚到旧项目文件。

由于教程不适合我,我只是使用 Tortoise 将我的项目文件的工作版本保存到 USB 记忆棒中,以便将其移植到我的 mac。之后,我用旧的工作文件替换了新的损坏的项目文件,清理了它,它就像一个魅力!

于 2013-02-07T09:14:02.510 回答
0

您可以删除配置文件的旧参考。然后在导入新的配置文件并选择 Xcode builder 之后。

于 2015-03-09T12:36:21.267 回答