试图重建一个昨天还在工作的应用程序。收到配置文件已过期的消息,因此我将其从 iPod 和 iTunes 中删除。当我选择一个新的配置文件(标识符中带有 * 的配置文件)时,我现在收到一个错误:
代码签名错误:找不到供应配置文件(长字符串)。
我错过了什么?我查看了相关问题,并没有看到这种情况。
有时您的 Xcode 项目文件会变得混乱,特别是如果您有一个旧项目并且首先使用旧版本的 Xcode/iPhone SDK 创建它。
您需要做的是在文本编辑器中打开项目文件,从错误中搜索“长字符串”并手动删除该行。
事实上,您应该继续删除任何指向任何配置文件的行。然后在 Xcode 中重新打开项目,转到设置并重新选择您的新配置文件。这在大多数情况下都可以解决类似的问题。
指向配置文件的行将如下所示:
PROVISIONING_PROFILE = "487F3EAC-05FB-4A2A-9EA0-31F1F35760EB";
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "487F3EAC-05FB-4A2A-9EA0-31F1F35760EB";
这是一个对我有用的更简单的解决方案,不需要手动编辑项目文件:
在 Xcode 中,在“组和文件”窗格中,展开“目标”并双击应用程序的目标。这将打开目标的信息窗格。在“构建”部分,检查“代码签名”部分是否有任何旧配置文件并替换为正确的配置文件。
请注意,这与双击您的项目图标并从那里更改配置文件不同。相当惊人:)
奥里
项目&目标属性->“不要编码符号”->确定->cmd+S(或cmd+B); Project&Targets Properties -> "Your Provision Profile"-> OK 一切都恢复正常了!
我同意布拉德的回答,你可以通过手动编辑你的目标/项目来解决这个问题,删除任何这样的行:
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 并删除麻烦的行。
刚刚看到这个问题的一个变体:我按照上面布拉德史密斯的笔记进入了 project.pbxproj 文件,除了在这种情况下,所有的 PROVISIONING_PROFILE 行似乎都是正确的,没有出现 Xcode 不能出现的“坏”配置文件字符串找不到。
但是,修复方法是相同的:删除 project.pbxproj 中的所有 PROVISIONING_PROFILE 行,即使理论上它们看起来“不错”,然后在 Xcode 中重新打开项目。
要完全在终端中实现 Brad 的解决方案,请使用这些命令
cd [Xcode project parent] vi [Xcode project name].xcodeproj/project.pbxproj /[offending provisioning profile] [Enter] dd - 删除整行按 n 直到找不到更多内容 Ctrl+x 保存并关闭
在我的情况下,通过打开 Window -> Organizer,选择我的设备并在右侧的“Provisioning”面板下删除旧的 Provisioning Profile 来解决问题。旧的已经标有红色的“x”符号,但 iPhone 仍在使用它。
除了那个配置文件,新的配置文件也出现了(同名),在简单地重新启动应用程序后,我让它运行顺利。
只花了一个小时左右,在布拉德的建议和一些额外的改变的帮助下,一切都奏效了。
我使用以下方法完成了此操作: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
都被填写。
我将提出一个建议,因为还没有人说过:请在您开始修改它的内容之前,请备份您的整个 .xcodeproj 文件。搞砸项目文件并且没有备份将导致非常非常不愉快的体验。
能够退出编辑可能是天赐之物。
在任何 iOS SDK 下选择代码签名中空白的行,然后选择正确的证书。
Brad Smith 的解决方案对我有用,但我还必须删除 CODE_SIGN_IDENTITY 字段才能使其正常工作。
我刚刚在我的 Xcode 4 中遇到了这个问题。要修复它,您需要将所有正确的规定都放入 Debug 和 Release 配置中。
我试图提交(通过归档)我的应用程序。所以我只是将 Debug 条款更改为“Don't Code Sign”,并将 Release 条款更改为我的应用程序的 appstore 条款。
这可以修复它并使我能够正常存档。希望有帮助。
不幸的是,这种方法对我不起作用。但这里有一个对我有用的修复(要让它工作,你需要一个在 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。之后,我用旧的工作文件替换了新的损坏的项目文件,清理了它,它就像一个魅力!
至少在 Xcode 5 中,这是为我解决问题的东西:
在配置文件下,选择有问题的配置文件,然后在下拉菜单中选择一个有效的配置文件。
https://i.stack.imgur.com/1lfqG.png
您可以删除配置文件的旧参考。然后在导入新的配置文件并选择 Xcode builder 之后。
我遇到了问题,因为我用一些新设备更新了我的 AdHoc 配置文件,以便在 TestFlight 上使用。假设这是因为 Xcode 在项目或目标的代码设计构建设置中对您的配置文件有旧的引用。我修复我的方法是:
转到目标构建设置和项目构建设置,在代码签名下将所有配置文件更改为其他内容。转到管理器中的设备/配置文件删除有问题的配置文件,然后单击右下角的刷新按钮。返回到目标和项目构建设置,并将您的配置文件设置为适当的(希望)新刷新的配置文件。