ChatGPT解决这个技术问题 Extra ChatGPT

代码设计错误:删除过期配置文件后找不到配置文件

试图重建一个昨天还在工作的应用程序。收到配置文件已过期的消息,因此我将其从 iPod 和 iTunes 中删除。当我选择一个新的配置文件(标识符中带有 * 的配置文件)时,我现在收到一个错误:

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

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


s
shim

有时您的 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 的宝贵建议。谢谢!
...aaaaand 在 2014 年仍然对 Xcode6 提出宝贵的建议!非常非常感谢你!
唯一对我有用的东西:首选项-> 帐户-> 查看详细信息-> 刷新。这从开发门户重新加载了所有配置文件。希望这可以帮助某人
s
shim

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

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

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

奥里


谢谢!下次发生时我会试试这个:)
并确保首先选择正确的构建配置:)
这并不总是有效。有时您仍然需要像第一个答案中显示的那样手动更改它。
只是另一个回应 SpaceTrucker 的注意事项:这种方法并不总是有效。接受的答案保证 Xcode 将停止寻找该幻像配置文件。
我发现,除了上述之外,我还必须删除我的所有配置文件,从配置门户重新下载它们,然后将它们重新导入 XCode。然后,在构建设置/代码签名中,为所有构建配置选择正确的配置文件。
u
user732414

项目&目标属性->“不要编码符号”->确定->cmd+S(或cmd+B); Project&Targets Properties -> "Your Provision Profile"-> OK 一切都恢复正常了!


这是唯一对我有用的解决方案(使用 XCode4)。选择“不要代码签名”来构建应用程序对我来说是一个强制性的步骤。
这似乎比拥有 200 多个赞成票的解决方案更好,因为 Xcode 将来可能会改变它编写项目文件的方式。
这是在 Xcode 4.2 中对我有用的正确解决方案
B
Brad The App Guy

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

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 并删除麻烦的行。


在此之后,您不必关闭和打开项目。更好的方法:)
s
shim

刚刚看到这个问题的一个变体:我按照上面布拉德史密斯的笔记进入了 project.pbxproj 文件,除了在这种情况下,所有的 PROVISIONING_PROFILE 行似乎都是正确的,没有出现 Xcode 不能出现的“坏”配置文件字符串找不到。

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


M
MechEngineer

要完全在终端中实现 Brad 的解决方案,请使用这些命令

cd [Xcode project parent] vi [Xcode project name].xcodeproj/project.pbxproj /[offending provisioning profile] [Enter] dd - 删除整行按 n 直到找不到更多内容 Ctrl+x 保存并关闭


s
stack-o-frankie

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

除了那个配置文件,新的配置文件也出现了(同名),在简单地重新启动应用程序后,我让它运行顺利。


+1,有时我无法安装,因为配置文件过期 - 甚至没有相同的标识符! - 在我的设备上。
这个对我有用,但我还必须重新启动 XCode 才能让它工作。
b
bobbypage

只花了一个小时左右,在布拉德的建议和一些额外的改变的帮助下,一切都奏效了。

我使用以下方法完成了此操作: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 都被填写。


R
Richard Brown

我将提出一个建议,因为还没有人说过:请在您开始修改它的内容之前,请备份您的整个 .xcodeproj 文件。搞砸项目文件并且没有备份将导致非常非常不愉快的体验。

能够退出编辑可能是天赐之物。


是的,这就是单片机大神做源码控制的原因。
s
sunkencity

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


j
jean_jean

Brad Smith 的解决方案对我有用,但我还必须删除 CODE_SIGN_IDENTITY 字段才能使其正常工作。


这是通过在文本编辑器中修改 xcode 项目文件手动完成的,当我进入损坏状态时,我经常不得不这样做才能重新开始。了解这两个可以删除的东西通常非常有帮助。好点子。
s
shim

我刚刚在我的 Xcode 4 中遇到了这个问题。要修复它,您需要将所有正确的规定都放入 Debug 和 Release 配置中。

我试图提交(通过归档)我的应用程序。所以我只是将 Debug 条款更改为“Don't Code Sign”,并将 Release 条款更改为我的应用程序的 appstore 条款。

这可以修复它并使我能够正常存档。希望有帮助。


C
Community

不幸的是,这种方法对我不起作用。但这里有一个对我有用的修复(要让它工作,你需要一个在 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。之后,我用旧的工作文件替换了新的损坏的项目文件,清理了它,它就像一个魅力!


R
RawMean

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

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

https://i.stack.imgur.com/1lfqG.png


a
annu

您可以删除配置文件的旧参考。然后在导入新的配置文件并选择 Xcode builder 之后。


s
shim

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

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