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


90

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

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

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

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

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

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

这正在我身上发生!太令人沮丧了!
塔林

1
我认为stackoverflow.com/a/28064945/1709587通常会显示某种错误消息;它比其他答案中包含的各种猜测更有用,并且应该是任何尝试调试这种情况的人的起点。您是否接受它以使其位于页面顶部?
Mark Amery

Answers:


76

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


4
太好了,这显示了我的错误。现在我可以不再浪费时间了,实际上可以解决错误了:)
Daniel Ryan 2015年

救了我的一天!谢谢您
-DZenBot

我不得不清理DerivedData +禁用BitCode(以防万一)。
DevAndArtist's

33

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

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


1
不,我的软件包ID中没有使用空格或下划线。
亚当·戴维斯

2
谢谢!对我来说,它是Bundle标识符中的下划线。
cocoapriest 2011年

谢谢!由于某种原因,我的捆绑包识别符为空白。
塔林

2
谢谢。删除下划线后,我的项目编译正常。我感觉到盲目的愤怒,宽慰和感激的奇怪组合。我该如何在项目名称中使用低级?
蒂娜D.

1
哇!我也有这个问题。一个强调。改为破折号,一切都很好。这绝对是绝对的苹果!我爱iOS。我鄙视Apple用来将您的应用程序安装到设备上进行测试的复杂过程。无论如何,谢谢您的修复!
DA。

21

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

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

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

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


是的,清洁无济于事。我一直在使用并浏览日志导航器和相关会话日志上的构建输出。您指向的日志文件似乎是二进制的,因此,我似乎对其具有的唯一访问权限是通过日志导航器和会话日志。
亚当·戴维斯

关于Log Navigator,在我的情况下,我有一个将来的日志(因为我将计算机上的日期更改为运行某些测试的1天)。似乎xcode使用最新的日志(按构建日期)。要解决此问题(在xcode 5中),我删除了该项目的派生日期,然后重新启动了xcode,因此以后的日志消失了,“问题导航器”开始显示正确的警告和错误。
alex-i

19

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

我知道在Xcode的早期版本中这没问题,但是似乎它们在Xcode 4中破坏了某些内容,因此它不再起作用了(我怀疑这与DerivedData路径无关)。因为它出现在你的iDevice的Launchpad中通过设置您可以添加一个空格到您的应用程序的名称CFBundleDisplayName中的关键Info.plist比其他东西${PRODUCT_NAME}


不,应用程序名称全是一个字,没有特殊字符,空格或其他任何东西。
亚当·戴维斯

对我来说就做到了。伙计,苹果公司找到了新的方法,使开发人员更难转移到他们的平台上。令人讨厌的错误!!
CF_Maintainer 2011年

产品名称中也不能带有下划线
afrederick 2012年

13

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

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


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

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

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


我也有这个问题。在设置我的证书/配置文件之前,我已经创建了一个新的Xcode4项目,它会毫无问题地出错。设置好它们之后,我重新启动了Xcode,便能够启动一个新项目,并且可以正常运行。(我知道现有项目的帮助不多。)
zekel 2011年

@zekel有趣!在完成证书和预配的过程之前,我还启动了项目并在模拟器上运行。我想那些没有让他们的供应在升级期间过期的人那时就不会有这个问题……
Adam Davis

7

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


我也有一个星号,删除它可以解决我的问题。感谢您提及。
SteveB,

使用通配符标识符(即com.developername。*)也是我遇到问题的原因。将其恢复为默认的com.developername。$ {PRODUCT_NAME:rfc1034identifier}解决了该问题。我目前正在运行Xcode 4.0.2
GnarlyDog,2011年

7

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


这也发生在我身上。在目标,摘要,标识符下,我在一开始就删除了空格。apple苹果。您可以创建多少陷阱?
fregas 2011年

捆绑标识符是我的问题。这是在Info.plist文件中。
宾福德

7

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


7

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

问题:

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

最愚蠢的解决方案自从:

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


而已 !我手动重命名了一个属性,这引起了问题。谢谢
Laszlo 2015年

6

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


6

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

这个对我有用。


6

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

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

希望这可以帮助。


6

上述解决方案不适用于我。

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

然后,生成错误就照常出现了。



4

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


3

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

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

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


3

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

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

/usr/bin/xcodebuild -target "UnitTest"

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


3

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

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

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


3

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


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


来自Apple的udpate:

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

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

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

我从下划线切换到破折号,从而解决了该问题。


2

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

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


2

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

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

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


2

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

希望有帮助


我得到了类似的Xcode 5.0.2:我的Localizable.strings中有一个语法错误,Xcode在构建时未显示。
巴特·范·库克

2

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


1

请参阅: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生成任何错误。


1

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


1

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

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


1

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

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

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

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

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


1

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


1

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

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

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


1

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.