Codeign错误:删除过期的配置文件后找不到配置文件

问题描述 投票:498回答:16

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

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

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

ios xcode provisioning-profile codesign
16个回答
854
投票

有时你的xcode项目文件搞砸了,特别是如果你有一个旧项目并且首先用旧版本的xcode / iphone sdk创建它。您需要做的是在文本编辑器中打开项目文件,从错误中搜索“长字符串”并手动删除该行。实际上,您应该继续删除任何指向任何配置文件的行。然后在xcode中重新打开项目,转到设置并重新选择新的配置文件。这清除了大多数时候的问题。指向配置文件的行将如下所示:

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

1
投票

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

我试图提交(通过存档)我的应用程序。所以我只是将Debug规定更改为“Do not Code Sign”,并将Release配置更改为我的应用程序的appstore规定。

这解决了它,使我能够正常存档。希望有所帮助。


1
投票

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


1
投票

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


0
投票

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


0
投票

我遇到了问题,因为我使用一些新设备更新了我的AdHoc配置文件,以便在TestFlight上使用。假设这种情况正在发生,因为xcode在项目的代码签名构建设置或目标中都有对您的供应配置文件的旧引用。我修理矿井的方式是:

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

0
投票

至少在Xcode 5中,这就解决了我的问题:

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


0
投票

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


129
投票

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

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

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


76
投票
  1. 项目和目标属性 - >“不要编码符号” - >确定 - > cmd + S(或cmd + B);
  2. 项目和目标属性 - >“您的配置文件” - >确定
  3. 一切都有效!

10
投票

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

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

但是,在Xcode 4.2及更高版本中,有一种更简单的方法来访问此文本并选择和删除它。在左侧的Project Navigator中,选择您的项目(Project Navigator的最顶行)。现在只需选择View> Version Editor> Show Version Editor。这会将您的项目显示为文本,您可以在Xcode的编辑器窗格中搜索PROVISIONING并删除麻烦的行。


6
投票

刚看到这个问题的一个变种:我按照上面的Brad Smith的说明进入了project.pbxproj文件,除了在这种情况下所有的PROVISIONING_PROFILE行看起来都是正确的,没有出现XCode无法发现的“坏”的配置文件字符串找不到。

但是,修复是一样的:删除project.pbxproj中的所有PROVISIONING_PROFILE行,即使它们在理论上看起来“好”,然后在XCode中重新打开项目。


4
投票

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

3
投票

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

除了那个配置文件之外,新的配置文件也显示出来(同名),只需重新启动应用程序,我就可以顺利运行它。


3
投票

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

我使用以下内容完成了此操作: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>窗口>管理器>设备>供应配置文件>右键单击配置文件>在Finder中显示> .mobileprovision的文件名是您的配置文件ID。

7)向下滚动project.pbxproj并找到发布部分的第二个实例。发布部分的第二个实例应以/* End XCBuildConfiguration section */的评论结尾

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


2
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.