繁体   English   中英

Xcode 4:构建失败,没有问题

[英]Xcode 4: Build Failed, No Issues

该应用程序可在模拟器中正常运行,构建并运行。

当我连接设备(运行iOS 4.3的iPhone 3GS)并定位到iPhone时,结果是“构建失败”和“没有问题”。

查看构建结果窗口,所有内容均为绿色,并带有复选标记, 其中包括“构建失败”通知

扩展成绩单不会显示任何错误。

我不能排除出现签名或配置错误的可能性,但是它给了我这些错误,我将它们消除了,现在它没有给我任何错误或问题,只是“构建失败;没有问题”

  • 以什么方式可以成功完成构建而不会失败?
  • 有没有一种方法可以查看构建输出,以查看是否可以找到出现故障的原因而没有问题?
  • 是否有超出问题列表的生成输出?
  • 我在构建窗口上没有看到它试图将应用程序加载到我的设备上的信息-该输出是否在其他地方?

我一直在“构建失败”,在问题导航器中没有错误(仅警告)。 但是,报告导航器可以正确显示错误。

您是否使用“下划线”和“空格”等作为捆绑包标识符?

您是否在其中一个导入中使用.m而不是.h? #import“ Photo.h”

我要尝试的第一件事是清理所有内容(“产品/清理”菜单),然后再次构建。 您可能已经尝试过了。

您将在Log Navigator中找到(并可以在构建过程中观看)完整的构建输出。 这是“运行”和“构建”按钮下方小图标中最右侧的图标。

构建(和调试)日志文件位于目录/ Users / you / Library / Developer / XCode / DerviedData / YourProject-abcdefg / Logs / Build(和../Debug)中。

我认为在设备上安装应用没有任何输出。

目标产品名称中是否有空格?

我知道在Xcode的早期版本中这没问题,但是似乎它们在Xcode 4中破坏了某些内容,因此它不再起作用了(我怀疑这与DerivedData路径无关)。 通过将Info.plistCFBundleDisplayName键设置为${PRODUCT_NAME}以外的其他名称,可以在应用程序的名称(在iDevice的启动板上显示)上添加一个空格。

鼓励我在一个本地的Cocoa Heads邮件列表中尝试一个小的默认示例项目-开始时我应该做一些事情,以确保我的配置和签名有效。 它可以在我的设备上正常构建和运行,因此所有迹象都指向我的代码或项目有问题。

我将把现有项目中的内容扔到新的示例项目中,如果它以类似的方式失败,我应该可以将问题缩小到较小的关注区域。


我已将应用程序的主要功能添加到一个新项目中,并且运行良好。 这次我做的唯一不同的事情是我没有设置通用二进制文件(现在仅iPhone),并且关闭了除纵向以外的所有内容。 据我所知,其他所有内容都是相同的,尽管如果以后再决定研究它,我将比较项目文件,看看还有什么不同。

因此,对我来说,解决方案是启动一个新项目,并将所有功能从旧项目移植到新项目中。

就像Paul在另一个答案中建议的那样,重新创建目标也可能会解决该问题,但是通过这样一个简单的项目,从头开始重新启动对我来说很容易。

经过所有这些答案之后,我遇到了完全相同的问题,但是有一些不同的方法为我解决了这个问题。

问题:

重构后构建失败,没有问题。 (使用编辑->重构->重命名来重命名一个类)。

有史以来最笨的解决方案:

去重构(重命名)其他东西(-_-“)。这样做之后,错误是Xcode无法重命名所有适当的文件,并且没有显示错误。然后,在再次重构之后,出现了先前重构的错误。

我遇到了同样的问题,就像其他人建议的那样,它与包标识符有关。 作为测试,我最近对其进行了更改,并在其中添加了星号。 我解决了这个问题,不得不清理目标,然后它起作用了。

删除未使用的目标后,这发生在我身上。 似乎Xcode在我剩余目标的CFBundleIdentifier(com.company.etc)中留了一个空格。 我必须使用外部文本编辑器编辑Info.plist才能将其删除,然后它可以正常工作。

我只是在一个工作空间中添加多个项目而玩,遇到了这个问题。 我在其中一个项目中有一个简单的库,正在构建中,并添加了一个基于iOS窗口的目标来对其进行测试。 我删除了为此创建的第一个目标,将其重命名。 读完这篇文章后,我尝试从.xcodeproj包中删除xcuserdata ,从而解决了我的问题。 我希望这可以帮助其他人。 在OS X 10.7.1上运行Xcode 4.1。

对我而言,构建失败而未在问题导航器中显示任何错误。 但是,在该构建会话的Log Navigator中,我可以看到该错误。 就我而言,该错误是一个未声明的常量。 我导入了所需的头文件,问题已解决。 我不确定为什么在“问题导航器”中未显示此错误。

我试图通过故意更改另一个变量的名称来重现此行为。 这次,错误显示在问题导航器中。 因此,我仍然不确定为什么以前的错误不会出现在“问题导航器”中。

希望这可以帮助。

上述解决方案对我不起作用。

我的解决方案是将项目移到另一个文件夹。

然后,生成错误只会像平常一样出现。

我有同样的问题。 我试图解决它的xcode崩溃了。 我重新打开它,效果很好。 也许我很幸运? 不管怎样,只要它现在可以工作,我都不在乎它到底出了什么问题

如果您更改了捆绑包标识符并清理了项目,但仍然无法正常工作,请尝试清空/ Users / YOUR_USERNAME / Library / Developer / Xcode / DerivedData目录。

这个对我有用。

您清理了构建文件夹吗? 转到产品菜单,按住Option键,然后选择“清理构建文件夹…”

我知道问题出在哪里:在Info.plist-> Bundle Identifier中:您不能使用'_'。 例如,com.mycompany.My_app无效,但com.mycompany.My-app确定。

为设备构建时,这里存在同样的问题。 构建失败,但我的日志全部为绿色选中标记。 清理/删除构建文件夹无法修复它。 我在其他地方读到有人通过删除并重新创建目标来解决此问题,但是我还没有在XCode 4中完全弄清楚该怎么做。


我的临时解决方案是下载并安装带有iOS 4.3的XCode 3.2.6。 我没有意识到苹果还发布了包含iOS 4.3的XCode 3版本,允许您推迟到XCode 4的升级。我向Apple提交了有关Build Failed问题的错误报告。


来自Apple的udpate:

当我们构建此项目时(尽管是在Xcode 4.0之后的版本上),我们在构建日志的ProcessProductPackaging步骤中看到以下内容:

(空):错误:CFBundleIdentifier'com.yourcompany.Magic_Carpet'包含非法字符'_'无效的捆绑包标识符'com.yourcompany.Magic_Carpet'

ProcessProductPackaging代码在最近才进行了大修,因此我们怀疑它只是在Xcode 4.0中未正确发出错误。 查看您自己构建的脚本,如果是这样,那么将来的Xcode版本中可能会解决此问题(在发布修复程序之前,我们无法进一步评论)。

我从下划线改为破折号,从而解决了该问题。

当尝试在xcode 4中编译现有项目时,我遇到了完全相同的问题,几乎经历了重新创建项目的痛苦。

但是,在最后一次尝试中,我用新创建的文件替换了info.plist文件,其中包括“文档类型”,“ URL类型”,“导出的类型UTI”和“导入的类型UTI”的附加标签。

这似乎可行,并且对我的项目而言是一个非常简单的修复。

我的UnitTest目标发生在我身上。 正在工作,然后停止了。 我忘了我只是在文件系统上删除了.h / .m,而没有从项目文件中删除它,但是XCode并未报告它。

我通过在命令行上运行项目来弄清楚了,该错误告诉我该错误:

/usr/bin/xcodebuild -target "UnitTest"

在您拥有项目文件的文件夹中运行此文件,然后将TargetTest替换为目标文件-或只是不传递目标文件来构建默认目标文件。

我也遇到了这个问题,但原因是不同的:

我有一个包含一个项目的工作区。 在这个项目中,我使用了一个框架,该框架通过将Xcode项目添加到我的项目中而包含在内。 我将框架的头文件导入到我的前缀头文件(.pch)中。 真傻

解决方案是从前缀头文件中删除框架头文件的#import,并仅在需要时添加它。

尝试上述所有方法均未成功后,只是要添加另一个答案:我不得不重新启动MacBook,不仅关闭了XCode,而且对我有用。 最终,XCode在Localizable.strings中显示了一些以前未显示的错误。

希望能有所帮助

我在xcschemes中清除了项目模式中的所有空格,这解决了此问题。 F *** ing苹果:( AppCode摇滚!

同样的事情发生在我身上,原因也不同。

我从Entitlements.plist文件中删除了get-task-allow,留下了一个空的plist。 构建设置仍将Entitlements.plist文件指定为我的Entitlements文件。 选择在连接iPhone的iOS设备上使用我的Ad-Hoc构建设置运行,并看到此错误中描述的行为。 添加get-task-allow可以修复它。

似乎有很多可能的原因导致此问题。 我的原来是

我的目标设置为使用不存在的配置文件。

我将项目设置为使用新的配置文件,然后删除了旧的配置文件。 没有意识到目标有自己的配置文件设置,但仍将其设置为旧的(现已删除)配置文件。

转到xcode中的管理器。 然后在“项目”选项卡中,删除该项目。 让xcode再次重建派生数据可以解决我的问题。

我在XCode4.5中遇到了类似的问题,在处理我的应用程序时,XCode突然崩溃了。

经过几个小时的搜索,我发现xcode崩溃时我的应用程序中的一个文件被删除了。

我从回收站还原了文件,问题得到解决。

我正在编写没有代码签名的Mac OS X应用程序。 当我在“权利”部分中启用沙箱功能时,代码签名将自动打开,并且我无法进行新的构建。

请参阅: http : //developer.apple.com/library/ios/#DOCUMENTATION/FileManagement/Conceptual/understanding_utis/understand_utis_conc/understand_utis_conc.html

UTI字符集统一类型标识符是Unicode字符串,通常包含ASCII字符集中的字符。 但是,仅允许使用ASCII字符的一个子集。 您可以使用大写和小写罗马字母(AZ,az),0到9的数字,点(“。”)和连字符(“-”)。 此限制基于RFC 1035中规定的DNS名称限制。

统一类型标识符也可以包含大于U + 007F的任何Unicode字符。

重要说明:UTI字符串中出现的任何非法字符(例如,下划线(_),冒号(“:”)或空格(“”))都将导致该字符串被视为无效的UTI。 在API层,不会为无效的UTI生成任何错误。

我的捆绑包名称没有问题,因此建议的解决方案对我不起作用。 最后,我为构建设置了“不要代码签名”,然后关闭了项目,然后在管理器中删除了配置,然后下载了新的配置并将其添加到管理器中,然后为构建设置了它们。 有效。

这不是技术答案,而是“用户错误”答案,可能不适用于您的情况。 它发生在我身上,我的搜索使我无法进行问答,直到我意识到自己的错误。 我在问题导航器中设置了一个过滤器集,该过滤器集与被报告为问题的任何内容都不匹配。 当我清除过滤器后,就会显示问题。

请注意,症状与您所询问的相同,并且我不知道何时设置该过滤器(该过滤器必须从其他导航视图继承),因为我不需要在简短列表中进行任何过滤。

我只是有一个类似的问题。 在任何地方都找不到错误。 删除了我所有的配置文件并添加了新的配置文件。

然后我尝试在我的设备上构建另一个测试应用程序,但收到以下错误消息:

代码签名错误:证书标识“ iPhone开发人员:xxxxxx”在钥匙串中出现多次。 代码签名工具只需要一个。

因此,我进入了钥匙串,找到了两个同名的过期证书,然后将其删除,就可以了。

随机性很强,但是如果您像我一样尝试在设备上构建另一个应用程序,您可能很幸运能够像我一样收到一条错误消息,以帮助诊断问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM