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

时间:2009-11-19 02:28:54

标签: ios xcode provisioning-profile codesign

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

  

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

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

16 个答案:

答案 0 :(得分:854)

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

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

答案 1 :(得分:129)

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

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

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

大利

答案 2 :(得分:76)

  1. 项目和目标属性 - > “不要编码标志” - >好的 - > cmd + S(或cmd + B);
  2. 项目和目标属性 - > “您的配置文件” - >确定

  3. 一切都有效了!

答案 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>版本编辑器>显示版本编辑器。这会将您的项目显示为文本,您可以在Xcode的编辑器窗格中搜索PROVISIONING并删除麻烦的行。

答案 4 :(得分:6)

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

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

答案 5 :(得分: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保存并关闭

答案 6 :(得分:3)

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

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

答案 7 :(得分: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

答案 8 :(得分:2)

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

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

答案 9 :(得分:1)

我刚在XCode4中遇到过这个问题。要解决这个问题, 你需要将所有正确的条款都放入Debug和Release配置中。

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

修复此问题并使我能够正常归档。希望有所帮助。

答案 10 :(得分:1)

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

答案 11 :(得分:1)

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

答案 12 :(得分: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。在那之后,我用旧的工作文件替换了新的破坏的项目文件,清理它,它就像一个魅力!

答案 13 :(得分:0)

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

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

答案 14 :(得分:0)

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

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

enter image description here

答案 15 :(得分:0)

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