试图重建一个昨天还在工作的应用程序。收到配置文件已过期的消息,因此我将其从 iPod 和 iTunes 中删除。当我选择一个新的配置文件(标识符中带有 * 的配置文件)时,我现在收到一个错误:
代码签名错误:找不到供应配置文件(长字符串)。
我错过了什么?我查看了相关问题,并没有看到这种情况。
试图重建一个昨天还在工作的应用程序。收到配置文件已过期的消息,因此我将其从 iPod 和 iTunes 中删除。当我选择一个新的配置文件(标识符中带有 * 的配置文件)时,我现在收到一个错误:
代码签名错误:找不到供应配置文件(长字符串)。
我错过了什么?我查看了相关问题,并没有看到这种情况。
有时您的 Xcode 项目文件会变得混乱,特别是如果您有一个旧项目并且首先使用旧版本的 Xcode/iPhone SDK 创建它。
您需要做的是在文本编辑器中打开项目文件,从错误中搜索“长字符串”并手动删除该行。
事实上,您应该继续删除任何指向任何配置文件的行。然后在 Xcode 中重新打开项目,转到设置并重新选择您的新配置文件。这在大多数情况下都可以解决类似的问题。
指向配置文件的行将如下所示:
PROVISIONING_PROFILE = "487F3EAC-05FB-4A2A-9EA0-31F1F35760EB";
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "487F3EAC-05FB-4A2A-9EA0-31F1F35760EB";
这是一个对我有用的更简单的解决方案,不需要手动编辑项目文件:
在 Xcode 中,在“组和文件”窗格中,展开“目标”并双击应用程序的目标。这将打开目标的信息窗格。在“构建”部分,检查“代码签名”部分是否有任何旧配置文件并替换为正确的配置文件。
请注意,这与双击您的项目图标并从那里更改配置文件不同。相当惊人:)
奥里
项目和目标属性->“您的配置文件”->确定
一切都恢复正常!
我同意布拉德的回答,你可以通过手动编辑你的目标/项目来解决这个问题,删除任何这样的行:
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
- 删除整行在我的情况下,问题是通过打开 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) 请注意,您有一个调试和发布部分
CODE_SIGN_IDENTITY
5 )在发布部分看一下"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 文件。搞砸项目文件并且没有备份将导致非常非常不愉快的体验。
能够退出编辑可能是天赐之物。
The solution of Brad Smith worked for me, but I also had to remove the CODE_SIGN_IDENTITY field to make it work.
我刚刚在我的 Xcode 4 中遇到了这个问题。要修复它,您需要将所有正确的规定都放入 Debug 和 Release 配置中。
我试图提交(通过归档)我的应用程序。所以我只是将 Debug 条款更改为“Don't Code Sign”,并将 Release 条款更改为我的应用程序的 appstore 条款。
这可以修复它并使我能够正常存档。希望有帮助。
在任何 iOS SDK 下选择代码签名中空白的行,然后选择正确的证书。
至少在 Xcode 5 中,这是为我解决问题的东西:
在配置文件下,选择有问题的配置文件,然后在下拉菜单中选择一个有效的配置文件。
我遇到了问题,因为我用一些新设备更新了我的 AdHoc 配置文件,以便在 TestFlight 上使用。假设这是因为 Xcode 在项目或目标的代码设计构建设置中对您的配置文件有旧的引用。我修复我的方法是:
不幸的是,这种方法对我不起作用。但这里有一个对我有用的修复(要让它工作,你需要一个在 Subversion 上的工作项目文件):
我确实回滚到我的项目文件的工作版本。由于无法使用 Xcode 进行还原(Xcode 4 的源代码控制中的“还原”选项在哪里?) - 我使用了 Tortoise、我的 Windows 机器和本教程(http://tortoisesvn.net/docs/nightly/TortoiseSVN_en /tsvn-howto-rollback.html)回滚到旧项目文件。
由于教程不适合我,我只是使用 Tortoise 将我的项目文件的工作版本保存到 USB 记忆棒中,以便将其移植到我的 mac。之后,我用旧的工作文件替换了新的损坏的项目文件,清理了它,它就像一个魅力!
您可以删除配置文件的旧参考。然后在导入新的配置文件并选择 Xcode builder 之后。