代码设计错误:删除过期配置文件后找不到配置文件
Posted
技术标签:
【中文标题】代码设计错误:删除过期配置文件后找不到配置文件【英文标题】:Codesign error: Provisioning profile cannot be found after deleting expired profile 【发布时间】:2009-11-19 02:28:54 【问题描述】:试图重新构建一个昨天还在运行的应用。收到配置文件已过期的消息,因此我将其从 iPod 和 iTunes 中删除。当我选择一个新的配置文件(标识符中带有 * 的配置文件)时,我现在收到一个错误:
代码签名错误:找不到配置文件(长字符串)。
我错过了什么?我查看了相关问题,并没有看到这种情况。
【问题讨论】:
【参考方案1】:有时您的 Xcode 项目文件会变得混乱,特别是如果您有一个旧项目并且首先使用旧版本的 Xcode/iPhone SDK 创建它。
您需要做的是在文本编辑器中打开项目文件,从错误中搜索“长字符串”并手动删除该行。
事实上,您应该继续删除任何指向任何配置文件的行。然后在 Xcode 中重新打开项目,转到设置并重新选择您的新配置文件。这在大多数情况下都可以解决类似的问题。
指向配置文件的行将如下所示:
PROVISIONING_PROFILE = "487F3EAC-05FB-4A2A-9EA0-31F1F35760EB";
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "487F3EAC-05FB-4A2A-9EA0-31F1F35760EB";
【讨论】:
.xcodeproj文件实际上是一个目录,就像一个应用程序包,如果你在finder中右键单击它,你可以选择显示包内容,然后你会看到里面有几个文件(或者在终端中只是cd进去)。实际的项目文件是带有 .pbxproj 扩展名的那个。使用文本编辑器打开它后,您要查找的行应以'PROVISIONING_PROFILE = 或''"PROVISIONING_PROFILE[sdk=iphoneos*]" =' 开头。删除所有这些,然后你应该会很好。 我发现,除了上述之外,我还必须删除我的所有配置文件,从配置门户重新下载它们,然后将它们重新导入 XCode。然后,在构建设置/代码签名中,为所有构建配置选择正确的配置文件。 在 2012 年仍然是 XCode4 的宝贵建议。谢谢! ...aaaa 并且在 2014 年仍然对 Xcode6 提出宝贵的建议!非常非常感谢! 唯一对我有用的东西:首选项 -> 帐户 -> 查看详细信息 -> 刷新。这从开发门户重新加载了所有配置文件。希望这可以帮助某人【参考方案2】:这是一个对我有用且不需要手动编辑项目文件的更简单的解决方案:
在 Xcode 中,在“组和文件”窗格中,展开“目标”并双击您应用的目标。这将打开目标的信息窗格。在“构建”部分,检查“代码签名”部分是否有任何旧配置文件并替换为正确的配置文件。
请注意,这与双击您的项目图标并从那里更改配置文件不同。太棒了:)
原产地
【讨论】:
谢谢!下次我会试试这个:) 并确保首先选择正确的构建配置:) 这并不总是有效。有时您仍然需要像第一个答案中显示的那样手动更改它。 只是另一个回应 SpaceTrucker 的注意事项:这种方法并不总是有效。接受的答案保证 Xcode 将停止寻找该幻像配置文件。 我发现,除了上述之外,我还必须删除我的所有配置文件,从配置门户重新下载它们,然后将它们重新导入 XCode。然后,在构建设置/代码签名中,为所有构建配置选择正确的配置文件。【参考方案3】:-
Project&Targets 属性 -> “不要代码签名” -> OK -> cmd+S(或 cmd+B);
项目和目标属性 -> “您的配置文件”-> 确定
一切恢复正常!
【讨论】:
这是唯一对我有用的解决方案(使用 XCode4)。构建应用程序时选择了“请勿使用代码签名”对我来说是一个强制性步骤。 这似乎比拥有 200 多票的解决方案更好,因为 Xcode 将来可能会改变它编写项目文件的方式。 这是在 Xcode 4.2 中对我有用的正确解决方案【参考方案4】:我同意 Brad 的回答,您可以通过手动编辑目标/项目来解决此问题,删除如下所示的任何行:
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 并删除麻烦的行。
【讨论】:
按照这个你不必关闭和打开项目。更好的方法:)【参考方案5】:刚刚看到这个问题的一个变体:我按照上面 Brad Smith 的说明进入了 project.pbxproj 文件,除了在这种情况下,所有 PROVISIONING_PROFILE 行似乎都是正确的,没有出现“坏”的配置文件字符串Xcode 找不到。
但是,修复方法是相同的:删除 project.pbxproj 中的所有 PROVISIONING_PROFILE 行,即使它们在理论上看起来“不错”,然后在 Xcode 中重新打开项目。
【讨论】:
【参考方案6】:要完全在终端中实现 Brad 的解决方案,请使用这些命令
cd [Xcode project parent]
vi [Xcode project name].xcodeproj/project.pbxproj
/[offending provisioning profile] [Enter]
dd
- 删除整行
按 n 直到找不到更多内容
Ctrl+x 保存并关闭
【讨论】:
【参考方案7】:在我的情况下,问题是通过打开 Window -> Organizer,选择我的设备并删除右侧“Provisioning”面板下的旧 Provisioning Profile 来解决的。旧的已经标有红色的“x”符号,但 iPhone 仍在使用它。
除了那个配置文件,新的配置文件也出现了(同名),在简单地重新启动应用程序后,我让它运行顺利。
【讨论】:
+1,有时我无法安装,因为配置文件过期 - 甚至没有相同的标识符! - 在我的设备上。 这个对我有用,但我还必须重新启动 XCode 才能让它工作。【参考方案8】:在 Brad 的建议和一些额外更改的帮助下,只花了一个小时左右的时间,一切都奏效了。
我使用以下代码完成了这项工作:10.7.3、Xcode 4.3.2、ios 5.1 顺便说一句。
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 > 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
都被填写。
【讨论】:
【参考方案9】:我将提出一个建议,因为还没有人说过:请在您开始修改它的内容之前备份您的整个 .xcodeproj 文件。搞砸项目文件并且没有备份会导致非常非常不愉快的体验。
能够退出编辑可能是天赐之物。
【讨论】:
是的,这就是单片机大神做源码控制的原因。【参考方案10】:在任何 iOS SDK 下选择代码签名中空白的行并选择正确的证书。
【讨论】:
【参考方案11】:Brad Smith 的解决方案对我有用,但我还必须删除 CODE_SIGN_IDENTITY 字段才能使其正常工作。
【讨论】:
这是通过在文本编辑器中修改 xcode 项目文件手动完成的,当我进入损坏状态时,我经常不得不这样做才能重新开始。了解这两个可以删除的东西通常非常有帮助。好点子。【参考方案12】:我刚刚在我的 Xcode 4 中遇到了这个问题。要修复它, 您需要将所有正确的规定都放入 Debug 和 Release 配置中。
我试图提交(通过归档)我的应用程序。所以我只是将 Debug 条款更改为“Don't Code Sign”,并将 Release 条款更改为我的应用程序的 appstore 条款。
这修复了它并使我能够正常存档。希望对您有所帮助。
【讨论】:
【参考方案13】:不幸的是,这种方法不适合我。但这里有一个对我有用的修复(要让它工作,你需要一个在 Subversion 上的工作项目文件):
我确实回滚到我的项目文件的工作版本。由于无法使用 Xcode (Where is the 'Revert' option in Xcode 4's Source Control?) 恢复 - 我使用 Tortoise、我的 Windows 机器和本教程 (http://tortoisesvn.net/docs/nightly/TortoiseSVN_en/tsvn-howto-rollback.html) 来回滚到较旧的项目文件。
由于教程不适合我,我只是使用 Tortoise 将我的项目文件的工作版本保存到 USB 记忆棒中,以便将其移植到我的 mac。之后,我用旧的工作文件替换了新损坏的项目文件,清理干净,它就像一个魅力!
【讨论】:
【参考方案14】:至少在 Xcode 5 中,这是为我解决问题的东西:
在配置文件下,选择有问题的配置文件,然后在下拉菜单中选择一个有效的配置文件。
【讨论】:
【参考方案15】:您可以删除配置文件的旧引用。然后在导入新的配置文件并选择 Xcode builder 之后。
【讨论】:
【参考方案16】:我遇到了问题,因为我使用一些新设备更新了我的 AdHoc 配置文件,以便在 TestFlight 上使用。假设发生这种情况是因为 Xcode 在项目或目标的代码设计构建设置中对您的配置文件有旧的引用。我修复我的方法是:
-
转到目标构建设置和项目构建设置,在代码签名下将所有配置文件更改为其他内容。
进入管理器中的设备/配置配置文件删除有问题的配置文件,然后点击右下角的刷新按钮。
返回到目标和项目构建设置,并将您的配置文件设置为适当的(希望是)新刷新的配置文件。
【讨论】:
以上是关于代码设计错误:删除过期配置文件后找不到配置文件的主要内容,如果未能解决你的问题,请参考以下文章
解决CentOS添加新网卡后找不到网卡配置文件,配置多网卡并设置静态路由