2009-11-19 67 views
488

尝试重新构建昨天刚刚工作的应用程序。有个消息称个人资料已过期,所以我将其从iPod和iTunes中删除。当我选择一个新的配置文件(一个带有*的标识符),我现在得到一个错误:Codesign错误:删除过期配置文件后找不到配置配置文件

Code Sign Error: Provisioning Profile (long string) can't be found. 

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

回答

848

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

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

感谢您的回复。我遇到了一个错误“文档无法打开”,试图用TextEdit打开.xcodeproj文件(刚刚退出并且Xcode未运行)。任何想法? – quantumpotato 2009-11-19 22:08:59

+209

.xcodeproj文件实际上是一个目录,就像一个应用程序包一样,如果您在查找程序中右键单击它,则可以选择显示包内容,然后您会在里面看到几个文件(或者在终端中只需将其放入)。实际的项目文件是一个.pbxproj扩展名。一旦你用文本编辑器打开它,你正在寻找的线应与“PROVISIONING_PROFILE =或” \t \t \t \t“‘PROVISIONING_PROFILE [SDK =的iPhoneOS *]’=”开头。删除所有这些,然后你应该很好。 – 2009-11-19 23:13:19

+0

Brad Smith 我试过用新配置文件存档我的应​​用程序,而Xcode查找旧配置。我试过你说的和工作的 – 2011-05-18 21:54:36

129

这里有一个简单的解决方案,为我工作,不要求项目文件的手动编辑:

在Xcode中,在在“Groups & Files”窗格中,展开“Targets”并双击应用的目标。这将打开目标的Info窗格。在“构建”部分中,检查任何旧配置文件的“代码签名”部分,并替换为正确的配置文件。

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

大利

+1

谢谢!我会尝试下次发生这种情况:) – quantumpotato 2010-06-07 17:54:12

+6

并确保首先选择正确的构建配置:) – Johnus 2010-11-16 04:30:51

+4

这确实应该是标记为正确的答案。 – djibouti33 2011-06-29 17:40:26

3

在我的情况下,问题是由打开的窗口中解决 - >管理器,选择我的设备,并在右侧的“部署”面板下删除旧的供应配置文件。旧的已经标有红色的“x”符号,但iPhone仍在使用它。

除了这个配置文件,新的配置文件也出现了(使用相同的名称),并且在简单地重新启动应用程序之后,我就可以顺利运行了。

+0

+1,有时我一直无法安装,因为过期的配置文件 - 甚至没有相同的标识符! - 在我的设备上。 – quantumpotato 2011-05-26 15:05:54

+0

这一个为我工作,但我也必须重新启动XCode才能使它工作。 – Matt 2011-07-29 10:32:52

6

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

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

76
  1. 项目&目标属性 - >“不代码符号” - >确定 - > cmd + S(或cmd + B);
  2. 项目&目标属性 - > “您的个人资料提供” - >确定

  3. 一切再次工作!

+4

这是唯一适用于我的解决方案(使用XCode4)。选择“不要输入密码”构建应用程序对我来说是一个强制步骤。 – Chazbot 2011-07-18 20:31:27

+0

这似乎是一个比200 + upvotes更好的解决方案,因为Xcode可能会改变它将来编写它的项目文件的方式。 – 2011-12-02 16:13:26

+1

这是在我的Xcode 4.2 – Selvin 2012-01-04 06:40:16

2

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

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

+2

git checkout/reset ftw – quantumpotato 2011-08-18 14:30:53

+0

工作正确的溶剂是的,这就是为什么单片机的神使源控制。 – 2012-06-04 23:59:02

1

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

我试图提交(通过归档)我的应用程序。所以我只是将Debug条款更改为“不要代码签名”,并将发布条款更改为我的应用程序的appstore条款。

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

1

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

+0

我无法相信这工作!,谢谢。 – j2emanue 2013-02-13 14:40:11

3

刚刚花了一个小时左右的时间做这件事,并在Brad的建议和一些额外的改变,一切工作的帮助下。

我已经做了这个使用以下内容:10.7.3,Xcode 4.3.2,iOS 5.1顺便说一句。

1)您myapp.xcodeproj和选择数据包内容

2)开放project.pbxproj用文本编辑器(不建议使用文本编辑,因为它可能搞砸了格式化)

3)向右滚动,点击所有一路下来,直到你找到/* Begin XCBuildConfiguration section */

你有一个调试和发布部分

5)在释放部分看看

4)注意事项& "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都充满在比赛结束。

4

为了实现布拉德的完全在终端解决方案,使用这些命令

  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保存并关闭
+0

这很有帮助 – 2012-10-03 13:18:23

1

布拉德史密斯的解决方案为我工作,但我也不得不删除CODE_SIGN_IDENTITY字段,使其工作。

+0

这是通过在文本编辑器中修改xcode项目文件来手动完成的,而且我经常不得不这样做,以便在进入破碎状态时重新开始。了解这两个可以删除的东西往往非常有帮助。好点子。 – 2013-08-26 13:10:54

10

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

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

然而,在Xcode 4.2和更高版本,有一个更更简单的方式来访问这个文本并选择并删除它。在左侧的Project Navigator中,选择您的项目(项目导航器的最上面一行)。现在只需选择视图>版本编辑器>显示版本编辑器。这会将项目显示为文本,您可以在Xcode的编辑器窗格中搜索PROVISIONING并删除麻烦的行。

+0

继此之后,您不必关闭并打开项目。更好的方法:) – viral 2013-04-18 06:05:13

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)回滚到较旧的项目文件。

由于教程没有为我工作,我只是用乌龟将我的项目文件的工作版本保存到一个USB棒,将它移植到我的MAC。之后,我用旧的工作文件替换了新的破解项目文件,清理完毕,它像一个魅力一样工作!

0

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

  1. 转到这两个目标的构建设置和项目建设的设置,在代码签名更改所有配置的配置文件到别的东西。
  2. 转到组织器中的设备/供应配置文件删除违规配置文件,然后单击右下角的刷新按钮。
  3. 返回到目标和项目构建设置,并将您的供应配置文件设置为适当(有希望)新刷新的供应配置文件。
0

至少在Xcode 5,这是解决了这个问题对我来说事情:

在置备文件,请选择有问题的供应配置文件,然后选择在下拉菜单中选择一个有效的供应曲线。

enter image description here

0

,你可以删除设置文件的老参考。然后导入新的配置文件并选择Xcode构建器。