共同设计错误:删除过期配置文件后无法找到配置文件

试图重建一个昨天还在工作的应用程序。收到一条信息说一个档案过期了,所以我把它从iPod和iTunes中删除了。当我选择一个新的配置文件(一个在标识符*),我现在得到一个错误:

代码符号错误:无法找到配置文件(长字符串)。

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

139703 次浏览

有时候你的Xcode项目文件会弄乱,特别是如果你有一个旧项目,并且第一次创建它是用旧版本的Xcode/iPhone SDK。

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

事实上,您应该直接删除指向任何配置概要文件的任何行。然后在Xcode中重新打开项目,进入设置并重新选择你的新配置文件。这在大多数情况下都能解决类似的问题。

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

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

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

在Xcode中,在“Groups &Files"窗格,展开“目标”;双击应用程序的目标。这将打开目标的Info窗格。在“建筑”;节,检查“代码签名”;节,并将其替换为正确的配置文件。

注意,这不同于双击项目图标并从那里更改概要文件。非常神奇!)

让奥

在我的案例中,这个问题通过打开Window -> Organizer来解决,选择我的设备并在右侧的“供应”面板下删除旧的供应配置文件。旧的手机已经打上了一个红色的“x”符号,但iPhone仍在使用它。

除了这个配置文件之外,新的配置文件也出现了(使用相同的名称),在简单地重新启动应用程序后,它运行得很顺利。

只是看到了这个问题的一个变体:我进入了这个项目。根据Brad Smith上面的注释,pbxproj文件,除了在这种情况下,所有的PROVISIONING_PROFILE行似乎是正确的,没有出现"bad"配置文件字符串,Xcode找不到。

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

  1. 项目目标属性->“不编码签名”-> OK -> cmd+S(或cmd+B);
  2. 项目目标属性->“您的供应配置文件”-> OK

  3. 一切都恢复正常了!

由于还没有人说过,我要提出一个建议:在你开始修改。xcodeproj文件的内容之前,请务必对它进行备份。搞砸项目文件并且没有备份将导致非常非常不愉快的体验。

能够取消编辑是天赐良机。

我刚刚在Xcode 4中遇到了这个问题。为了解决这个问题, 你需要把所有正确的规定都放在调试和发布配置中

我试图提交(通过存档)我的应用程序。所以我只是将调试条款改为“不要代码签名”,并将发布条款改为我的应用程序的appstore条款。

这修复了它,使我能够正常归档。希望这能有所帮助。

选择“任何iOS SDK”下的“协同设计”中空白的行,并选择正确的证书。

只花了一个小时左右的时间,在布拉德的建议和一些额外的改变的帮助下,它都起作用了。

我使用以下方法做到了这一点: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并找到release部分的第二个实例。发布部分的第二个实例应该以/* End XCBuildConfiguration section */注释结束

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

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

Brad Smith的解决方案适合我,但我还必须删除CODE_SIGN_IDENTITY字段才能使其工作。

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

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

然而,在Xcode 4.2及以后版本中,有一个更简单的方法来访问这个文本并选择和删除它。在左边的Project Navigator中,选择您的项目(Project Navigator的最上面一行)。现在只需选择查看>版本编辑器>显示版本编辑器。这将显示你的项目为文本,你可以搜索PROVISIONING并删除麻烦的行,就在Xcode的编辑器窗格中。

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

我确实回滚到了项目文件的工作版本。由于不可能用Xcode ('Revert'选项在Xcode 4's源代码控制?)恢复-我使用Tortoise,我的Windows机器和本教程(http://tortoisesvn.net/docs/nightly/TortoiseSVN_en/tsvn-howto-rollback.html)回滚到一个旧的项目文件。

由于教程对我不起作用,我只是使用Tortoise将我的项目文件的工作修订保存到u盘,并将其移植到我的mac上。之后,我用旧的工作文件替换了新的损坏的项目文件,并进行了清理,它就像一个魔法!

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

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

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

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

enter image description here

您可以删除配置文件的旧引用。然后在导入新的配置文件和选择Xcode构建器。