协同设计错误:删除过期的配置文件后找不到配置文件


500

试图重建一个昨天才可以运行的应用程序。收到一条消息,表明配置文件已过期,因此我将其从iPod和iTunes中删除了。当我选择一个新的配置文件(标识符中带有*的配置文件)时,出现一个错误:

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

我想念什么?我浏览了相关问题,还没有看到这种情况。

Answers:


856

有时,您的xcode项目文件会混乱,特别是如果您有一个旧项目,并首先使用旧版本的xcode / iphone sdk创建了它。您需要做的是在文本编辑器中打开项目文件,从错误中搜索“长字符串”,然后手动删除该行。实际上,您应该只删除所有指向任何配置文件的行。然后在xcode中重新打开该项目,转到设置并重新选择新的配置文件。多数情况下,这可以解决类似的问题。指向供应配置文件的行将如下所示:

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

210
.xcodeproj文件实际上是一个目录,如应用程序捆绑包,如果在finder中右键单击它,则可以选择show package content,然后您将在其中看到多个文件(或在cd中进入终端)。实际的项目文件是扩展名为.pbxproj的文件。使用文本编辑器打开它后,您要查找的行应以'PROVISIONING_PROFILE =或''“ PROVISIONING_PROFILE [sdk = iphoneos *]” ='开头。删除所有这些,那么你应该很好。
Brad The App Guy

2
我发现,除上述内容外,我还必须删除所有个人资料,从配置门户重新下载它们,然后将它们重新导入XCode。然后,在“构建设置/代码签名”中,为所有构建配置选择正确的配置文件。
杰伊·伊默曼

11
在2012年对XCode4仍然是有价值的建议。谢谢!
Alexey Rusakov 2012年

6
... aaaa,在2014年对于Xcode6仍然是有价值的建议!非常非常感谢你!
汤姆·范·祖默伦

4
唯一对我有用的东西:首选项->帐户->查看详细信息->刷新。这从开发人员门户重新加载了所有配置文件。希望这对某人有帮助
blackhawk4152

129

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

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

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

奥里


1
谢谢!我会尝试这下它发生:)时间
quantumpotato

6
并确保首先选择正确的构建配置:)
Johnus 2010年

1
这并不总是有效。有时您仍然需要手动修改它,如第一个答案所示。
SpaceTrucker 2011年

呼应SpaceTrucker的另一个注意事项:此方法并不总是有效。接受的答案可以保证Xcode将停止寻找该幻象配置文件。
Simone Manganelli

我发现,除上述内容外,我还必须删除所有个人资料,从配置门户重新下载它们,然后将它们重新导入XCode。然后,在“构建设置/代码签名”中,为所有构建配置选择正确的配置文件。
杰伊·伊默曼

76
  1. 项目和目标属性->“不要代码签名”->确定-> cmd + S(或cmd + B);
  2. 项目和目标属性->“您的提供配置文件”->确定

  3. 一切再次正常!


4
这是唯一对我有用的解决方案(使用XCode4)。对我来说,选择“不使用代码签名”来构建应用程序是必不可少的步骤。
Chazbot 2011年

这似乎比具有200多个投票的解决方案更好,因为Xcode将来可能会更改其写入项目文件的方式。
Danyal Aytekin 2011年

1
这是在Xcode 4.2中为我工作的正确解决方案
Selvin 2012年

10

我同意Brad的回答,即您可以通过手动编辑目标/项目并删除以下任何行来解决此问题:

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

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


之后,您不必关闭和打开项目。更好的方法:)
病毒式的病毒

6

只是看到了一个关于此问题的变体:我按照上文Brad Smith的说明进入了project.pbxproj文件,除了在这种情况下,所有的PROVISIONING_PROFILE行似乎都是正确的,没有出现XCode不能的“错误”配置文件字符串找不到。

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


4

要完全在终端中实现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保存并关闭

3

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

除了该概要文件之外,还显示了新概要文件(具有相同的名称),并且在重新启动应用程序之后,我就使它运行平稳。


+1,有时我无法安装,因为配置文件已过期-甚至没有相同的标识符!-在我的设备上。
Quantumpotato 2011年

这个代码对我有用,但是我还必须重新启动XCode才能使其正常工作。
马特

3

花费了一个小时左右的时间,并在Brad的建议和一些其他更改的帮助下,所有这些都起作用了。

我使用以下代码完成了此操作:10.7.3,Xcode 4.3.2,iOS 5.1 btw。

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

2)project.pbxproj使用文本编辑器打开(不建议使用textedit,因为它可能会破坏格式)

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

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

5)在发布部分中查看CODE_SIGN_IDENTITY&,"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>窗口>管理器>设备>供应配置文件>右键单击配置文件>在Finder中显示> .mobileprovision的文件名就是您的配置文件ID。

7)向下滚动,project.pbxproj然后找到发布部分的第二个实例。发布部分的第二个实例应以注释结尾/* End XCBuildConfiguration section */

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


2

由于没有人说过,我将提出一个建议:请先备份整个.xcodeproj文件,然后再开始修改其内容。搞砸了项目文件并且没有备份将导致非常非常不愉快的体验。

能够撤消编辑可能是天赐之物。


是的,这就是SCM众神进行源代码控制的原因。
Br.Bill 2012年

1

我刚在XCode4中遇到此问题。要修复此问题,您需要将所有正确的规定都放入Debug和Release配置中。

我试图提交(通过存档)我的应用程序。因此,我只是将Debug条款更改为“ Do n't Code Sign”,将Release条款更改为我的应用程序的appstore条款。

此问题已解决,可以正常存档。希望能有所帮助。


1

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


1

布拉德·史密斯(Brad Smith)的解决方案对我有用,但是我还必须删除CODE_SIGN_IDENTITY字段才能使其工作。


这是通过在文本编辑器中修改xcode项目文件来手动完成的,而当我进入损坏状态时,我常常不得不这样做。知道这两个可以删除的东西通常会很有帮助。好点子。
沃伦·P

0

不幸的是,这种方法对我不起作用。但这是一个对我有用的修复程序(要使其正常工作,您需要在Subversion上有一个有效的项目文件):

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

由于该教程对我不起作用,因此我仅使用Tortoise将项目文件的有效修订版本保存到USB记忆棒中,以将其移植到Mac。之后,我用旧的工作文件替换了新的破碎项目文件,对其进行了清理,就像一个魅力一样!


0

我遇到了问题,因为我用一些新设备更新了AdHoc配置文件,以便在TestFlight上使用。假定发生这种情况是因为xcode在项目或目标的代码签名构建设置中对配置文件的引用很旧。我修复我的方法是:

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

0

至少在Xcode 5中,这为我解决了问题:

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

在此处输入图片说明


0

您可以删除配置文件的旧参考。然后,导入新的置备配置文件并选择Xcode构建器。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.