试图重建一个昨天还在工作的应用程序。收到一条信息说一个档案过期了,所以我把它从iPod和iTunes中删除了。当我选择一个新的配置文件(一个在标识符*),我现在得到一个错误:

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

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


当前回答

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

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

其他回答

不幸的是,这种方法并不适合我。但是这里有一个对我有用的修复(要让它工作,你需要一个Subversion上的工作项目文件):

我确实回滚到了项目文件的工作版本。由于无法使用Xcode进行还原(Xcode 4的源代码控制中的“还原”选项在哪里?)-我使用Tortoise,我的Windows机器和本教程(http://tortoisesvn.net/docs/nightly/TortoiseSVN_en/tsvn-howto-rollback.html)来回滚到旧的项目文件。

由于教程对我不起作用,我只是使用Tortoise将我的项目文件的工作修订保存到u盘,并将其移植到我的mac上。之后,我用旧的工作文件替换了新的损坏的项目文件,并进行了清理,它就像一个魔法!

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

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

我刚刚在Xcode 4中遇到了这个问题。为了解决这个问题, 您需要将所有正确的规定都放入调试和发布配置中。

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

这修复了它,使我能够正常归档。希望这能有所帮助。

只是看到了这个问题的一个变体:我进入了这个项目。根据Brad Smith上面的注释,pbxproj文件,除了在这种情况下,所有的PROVISIONING_PROFILE行似乎是正确的,没有出现Xcode找不到的“坏”配置文件字符串。

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

只花了一个小时左右的时间,在布拉德的建议和一些额外的改变的帮助下,它都起作用了。

我使用以下方法做到了这一点:10.7.3,Xcode 4.3.2, iOS 5.1 btw。

1)右键点击你的myapp。Xcodeproj并选择包内容

2)开放项目。使用文本编辑器Pbxproj(不建议使用textedit,因为它可能会搞砸格式)

3)一直向下滚动,直到找到/* Begin XCBuildConfiguration部分*/

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)在项目中向下滚动。并找到发布部分的第二个实例。发布部分的第二个实例应该以注释结尾:/* end XCBuildConfiguration section */

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