试图重建一个昨天还在工作的应用程序。收到一条信息说一个档案过期了,所以我把它从iPod和iTunes中删除了。当我选择一个新的配置文件(一个在标识符*),我现在得到一个错误:
代码符号错误:无法找到配置文件(长字符串)。
我错过了什么?我浏览了相关问题,并没有看到这种情况。
试图重建一个昨天还在工作的应用程序。收到一条信息说一个档案过期了,所以我把它从iPod和iTunes中删除了。当我选择一个新的配置文件(一个在标识符*),我现在得到一个错误:
代码符号错误:无法找到配置文件(长字符串)。
我错过了什么?我浏览了相关问题,并没有看到这种情况。
当前回答
在我的案例中,这个问题通过打开Window -> Organizer来解决,选择我的设备并在右侧的“供应”面板下删除旧的供应配置文件。旧的手机已经打上了一个红色的“x”符号,但iPhone仍在使用它。
除了这个配置文件之外,新的配置文件也出现了(使用相同的名称),在简单地重新启动应用程序后,它运行得很顺利。
其他回答
有时候你的Xcode项目文件会弄乱,特别是如果你有一个旧项目,并且第一次创建它是用旧版本的Xcode/iPhone SDK。
你需要做的是在文本编辑器中打开项目文件,从错误中搜索“长字符串”,并手动擦除该行。
事实上,您应该直接删除指向任何配置概要文件的任何行。然后在Xcode中重新打开项目,进入设置并重新选择你的新配置文件。这在大多数情况下都能解决类似的问题。
指向配置文件的行如下所示:
PROVISIONING_PROFILE = "487F3EAC-05FB-4A2A-9EA0-31F1F35760EB";
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "487F3EAC-05FB-4A2A-9EA0-31F1F35760EB";
由于还没有人说过,我要提出一个建议:在你开始修改。xcodeproj文件的内容之前,请务必对它进行备份。搞砸项目文件并且没有备份将导致非常非常不愉快的体验。
能够取消编辑是天赐良机。
这里有一个更简单的解决方案,对我来说是有效的,它不需要手动编辑项目文件:
在Xcode中,在“Groups & Files”窗格中,展开“Targets”,双击应用的目标。这将打开目标的Info窗格。在“构建”部分中,检查“代码签名”部分中的任何旧配置文件,并将其替换为正确的配置文件。
注意,这不同于双击项目图标并从那里更改概要文件。非常神奇!)
Ori
我刚刚在Xcode 4中遇到了这个问题。为了解决这个问题, 您需要将所有正确的规定都放入调试和发布配置中。
我试图提交(通过存档)我的应用程序。所以我只是将调试条款改为“不要代码签名”,并将发布条款改为我的应用程序的appstore条款。
这修复了它,使我能够正常归档。希望这能有所帮助。
只花了一个小时左右的时间,在布拉德的建议和一些额外的改变的帮助下,它都起作用了。
我使用以下方法做到了这一点: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都被填写。