【问题标题】:Xcode Cannot Run on the Selected DestinationXcode 无法在选定的目标上运行
【发布时间】:2012-07-30 20:42:07
【问题描述】:

今天早上我正在运行我的应用程序,现在当我尝试在 iPhone 5.1 模拟器上运行时突然出现以下错误。

无法在所选目标上运行

目标不支持构建所选软件的体系结构。切换到支持该架构的目的地以运行所选软件。

我删除了方案,但仍然没有解决方案。

我正在使用山狮。我正在使用 xCode 4.4(最近升级到 Mountain Lion 和 xCode 4.4)

更新 1:这是我的构建设置的视图:

更新:这是阻止它运行的实际错误。

【问题讨论】:

  • 刚刚重启 XCode 为我解决了这个问题。
  • 我也有同样的问题。没有修复。
  • 从目标中删除 Info.plist(不是删除文件本身)。或者只是运行 Project validate 并修复问题。问题解决了!
  • @bagusflyer:谢谢,转到项目设置并单击“验证设置”为我解决问题,否则我每次清理并再次构建时都必须重新启动 xcode
  • 我的问题是我从 plist 中的 ${EXECUTABLE_NAME} 更改了可执行文件名称。改回来后,清除派生数据并重新启动XCode,我摆脱了错误。

标签: ios xcode


【解决方案1】:

查看该架构中的项目和目标构建设置,看看是否有任何变化。当第一次从 Xcode 3 到 4 时,它曾经以隐藏的方式破坏,给出同样的错误,最后你不得不将 i386 添加到“Valid Architectures”行。我刚刚查看了我从 Xcode 4.1 开始的大项目,它没有显示任何关于 i386 等的信息,但我有其他较新的项目,我在 $(ARCHS_STANDARD_32_BIT) 行中看到了这个灰色的东西。

编辑:我和一位大师朋友重温了一遍。我们俩都无法在我们的项目中找到与 i386 的链接——Xcode 使用了一些魔法。也就是说,我确实在项目中的二进制 plist 中找到了 i386,这导致我提出另一个建议。

在您的构建设置中,确保所有“架构”都是 $(ARCHS_STANDARD_32_BIT)。

如果这不起作用,我们建议您在方案菜单中选择 iPhone 5.1 Simulator 时查看构建的 compile 和 ld 行 - 看看它是否真的是 i386,

另一个想法 - 将所有方案和用户设置移动到某处的保存文件夹(关闭项目),然后重新打开并重新创建方案。现在再试一次。在我的任何 project.pbxproj 文件中都没有对 i386 的引用,所以我们怀疑这与目标设备的方案设置有某种关系。

祝你好运!

【讨论】:

  • 我用与项目设置相同的目标设置的屏幕截图更新了问题。
  • 所以我假设(希望)你已经清理然后重建。我遇到了奇怪的 Xcode 问题,这些问题在完整的机器重启 (YMMV) 后就消失了。构建设置是目标而不是项目,对吗? “iOS Deployment Target”也是iOS5.1吧?如果是我,我会重新启动并希望最好。另一个建议 - 在 4.4 中创建一个新的单视图 iOS 项目 - 并运行它。它运行吗?我尽快升级到 4.4,我所有的东西仍然可以使用,但在 Lion 上仍然如此。
  • 奇怪的是,这一切都是在我将项目从文档目录复制到桌面时开始的。是的,我已经清理并重建了。早些时候,当我重新启动它时,它可以工作,但经过多次重建后,我又遇到了同样的错误。
  • 我用实际的错误截图更新了原始问题。它在我尝试运行应用程序时出现。同样对于所有新项目,它都可以正常运行并且一切正常。这个项目是旧的,它是在旧版本的 xCode 中创建的。
  • 尝试将其复制回来,看看会发生什么。您可以做的另一件事是在构建结果窗口中查找失败的第一行,然后获取实际的构建行并将其发布在此处。我只能猜测,当您为模拟器构建时,它会尝试构建 64 位 x86...
【解决方案2】:

我相信这可能是 Xcode 4.4+ 当前未列出的错误。我的项目有/遇到了同样的问题。我删除了所有版本的 Xcode 并使用 4.4 重新启动,打开我的项目并再次出现错误。

然后我使用不同名称的模板开始了一个新项目。没有问题。

然后我重命名了我的旧项目,启动了一个具有相同名称的新空项目并构建/运行并再次出现错误。这个新项目只不过是一个什么都不做的视图控制器。我应该得到一个空白屏幕,但得到了与您相同的错误。

沮丧地我关闭了一天并重新运行旧项目并且它有效。我没有改变任何东西。目前我再次遇到错误,重新启动或重新启动 Xcode 都无法修复它。

因此,总而言之,一个项目可以完全不做任何更改,有时它可以正常构建和运行,有时您会收到此错误。作为记录,我在运行 Xcode 4.3 时没有收到此错误。

直到我升级到恰好在同一天的 Mountain Lion 和 Xcode 4.4 后,我的问题才出现。现在我无法恢复到 100% 可行的配置。

【讨论】:

  • 最近似乎对我有用的是关闭 Xcode。杀死所有似乎徘徊的 Xcode 进程。进入 /Applications 并将您可能拥有的所有其他版本移动到 Applications 之外的其他文件夹。完成此操作后,Xcode 似乎在模拟器上运行了该应用程序。我仍然看到的一个问题是有时它会说 Running ${EXECUTABLE_NAME} 而不是插入正确的应用程序名称。 YMMV
  • 好的,一周后我可以放心地说它对我来说是固定的。我升级到 4.4.1,但似乎真正修复它的是将我的源代码树移动到另一个文件夹,启动另一个空模板,将我的源文件重新添加到新项目并验证所有构建设置是否具有正确的信息。我已经一周没有遇到问题了。
  • 我认为这也是一个错误——Mountain Lion & 4.4。为我解决这个问题的唯一方法是重新启动我的 mac,但它很快就会死而复生。
  • 这绝对是 Xcode 4.4.1 中的一个错误。我遇到了同样的问题,不得不删除并重新安装 Xcode 才能让项目再次在我的设备上运行。
【解决方案3】:

将我的文件提交到 SVN 并在新目录中签出项目为我解决了这个问题。

【讨论】:

  • 在尝试了所有方法之后,真的只有这一个有效......苹果的耻辱
  • @SharenEayrs 我真的希望你在开玩笑:D
【解决方案4】:

我遇到了同样的问题。就我而言,似乎是我更改了多目标项目的捆绑名称,而不是产品名称。一旦我通过正确编辑项目名称并将捆绑名称设置回 ${PRODUCT_NAME} 更正了这一点,它将再次在模拟器中运行。

这可能不是每个人的答案,但似乎产品命名错误(特殊字符、空格等)是许多人的原因,这就是促使我回顾我的重命名的原因。

【讨论】:

  • 没错,在我的例子中是空格字符!
【解决方案5】:

在为 OSX 项目升级到 Mountain Lion 和 XCode 4.4.1 后,我遇到了这个问题。 为了解决这个问题,我不得不将我的部署目标升级到 10.5 或更高版本;它设置为 10.4 及更高版本。

【讨论】:

    【解决方案6】:

    我在 Xcode 4.4 版本中发现了这个问题。最后我这样解决了:

    在您的项目中找到“Info.plist”,然后在窗口的右侧视图中取消选择目标会员加号,它适用于我。

    【讨论】:

    • 谢谢恶魔。遇到相同问题的用户可能还会看到:错误:未能附加到进程 ID 0 您还将在模拟器中看到 ${PRODUCT_NAME} 作为您的应用程序,而不是您填充的产品名称。我正在运行 XCode 4.5
    • 目标会员是什么意思?没有这样的事情。
    • @SharenEayrs 它在 xcode 的右侧视图中,您可以选择正确的导航查看器。
    • 我还有一些 PSD 文件进入了构建周期。摆脱这些,Info.plist 文件对我有用。
    • 我是通过删除并重新添加我的 info.plist 造成的。我听从了您的建议,重新启动了 Xcode,并删除了派生数据文件夹并修复了它。谢谢!
    【解决方案7】:

    您必须在“活动监视器”中找到 Xcode 进程并将其杀死!我只是为了解决类似的问题!

    【讨论】:

    • 不幸的是,这似乎并不总是有帮助。
    【解决方案8】:

    我不小心删除了 Resources 文件夹后遇到了这个问题,当我再次将它添加到项目中时,Bam !

    我也在运行 Mountain Lion 和 XCode 4.4!

    试图找出造成这种情况的原因,但是当您删除然后添加 info.plist 文件时,它似乎被复制了!有人可以确认吗?

    【讨论】:

      【解决方案9】:

      您可以按照以下步骤操作:

      • 退出 Xcode 和 iPhone 模拟器
      • 拔下您的设备
      • 转到/Users/your_usr_name/Library/Developer/Xcode/DerivedData/
      • 删除此文件夹下的所有数据
      • 再次启动 Xcode 并运行您的项目

      希望这能解决您的问题。

      【讨论】:

      • 这对我有用。我不需要删除所有项目,只需要删除与有问题的项目相关的数据。
      • 清除这些文件夹并从目标中删除 Info.plist(不删除文件本身)
      • @zszen,好点子。通常出现此问题是因为将 -info.plist 文件添加到目标。因此,只需选择 -info.plist 文件,转到“文件检查器”(xcode 的右侧面板)并从目标成员资格中取消选中(如果已选中)。之后按照这些步骤操作。
      • 不错的提示,但对我来说,工作量不大,但有所不同。我有两个 7.1 的设备,但每个设备都有不同的版本 11D167 和 11D169。在文件夹 (/Users/your_usr_name/Library/Developer/Xcode/DerivedData/ 仅 7.1 (11D167) 但 7.1 (11D169) 丢失。当我添加将数据从 7.1 (11D167) 复制到 7.1 (11D169) 并重新启动Xcode 并重新连接设备,正确的数据被复制。更多在我的博客:pjstrnad.com/…
      【解决方案10】:

      我的项目也面临同样的问题。这是对情况和我的解决方案的简要说明。这可能适用于您的情况,也可能不适用。

      我在一个有多个 iOS 项目的地方工作。我最近将系统升级到 Mac OSX 10.8 和 Xcode 4.4.1。我正在研究一个最初基于 Xcode 4.1 for iOS 4 构建的项目。由于 Xcode 在 4.3 之前都有 iOS 4 模拟器,因此该项目在所有模拟器上都构建并运行良好。然而,在 Xcode 4.4.1 中,我没有找到 iOS 4 模拟器,也没有简单的方法来安装它们,这就是为什么我收到“无法在选定目标上运行”错误。以下是我运行项目的方法。

      • Build Settings > Architectures 下检查并将所有配置文件的架构设置为Standard (armv7)${ARCHS_STANDARD_32_BIT}

      • 在我的情况下将Base SDK 设置为Latest iOS(<ios version #>) 5.1。

      • 将所有配置文件的 Build Active Architecture Only 设置为 NO

      • 将所有配置文件的 Valid Architectures 设置为 armv6 armv7。您可能需要添加任何一个,具体取决于已有的内容。

      • iOS Deployment Target 设置为iOS 5.1(在我的情况下)。

      • 确保您在项目的Summary 标签下的Deployment Target 下具有相同的目标。

      清洁并运行并交叉手指!

      【讨论】:

        【解决方案11】:

        发生两件事后我遇到了同样的问题:

        • 我升级到 Facebook SDK 3.1
        • 我更新了我的 OSX(带有次要版本更新)

        我唯一有效的解决方法是添加 armv7s(注意最后的“s”!!!) 就像这里建议的那样: https://stackoverflow.com/a/12540654/531527

        【讨论】:

          【解决方案12】:

          我刚刚在 Xcode 4.5.1 中遇到了这个错误,在我去掉所有非字母字符 Product Name 构建设置后错误消失了。

          【讨论】:

          • 非常感谢!伙计,如果不是您的输入,我会永远搜索这个而永远不会成功。
          【解决方案13】:

          我已经解决了在项目和目标构建设置中将关键“构建变体”从“armv7”更改为“正常”的问题

          【讨论】:

            【解决方案14】:

            从 Facebook SDK 3.1 更新到 Facebook SDK 3.1.1 后,我遇到了这个问题。我猜是我的错。

            在“resources”文件夹中,现在有一个完全无用但危险的 info.plist,如果导入它,可能会破坏您的项目文件。不知道他们为什么把它包括在内,但我相信我们最近很少有人犯同样的错误。

            【讨论】:

            • 同样的事情发生在我身上,从项目中删除 Info.plist 解决了这个问题。
            • 有 info.plist 但它在框架中。是的,它发生在更新 Facebook SDK 之后。删除它有点极端。
            • 是的!尝试了一切,但没有任何工作! Facebook SDK 中的 Info.plist 就是原因。删除参考!
            • 我对这个问题的经验,这个解决方案两次都很好。
            • 是的!只需删除从 FB SDK 导入的资源文件夹中的 info.plist。然后它会再次完美运行。
            【解决方案15】:

            在我的情况下,问题是在删除整个 Resources 文件夹、从其他或旧项目复制 Resources 文件夹而不是当前项目然后添加回该文件夹之后发生的。

            我在分析工具的帮助下解决了这个问题:分析后,它让我对“复制捆绑资源”中的 Info.plist 感到温暖。

            只需转到 Copy Bundle Resource(在 Build Phrase 选项卡上)删除 Info.plist,然后重新启动 Xcode,清理并构建。我的项目恢复正常了。

            希望能帮助别人:)

            【讨论】:

              【解决方案16】:

              另一个变体解决方案:在尝试了上面列表中的几乎所有内容后,我通过解决无法找到 TestFlightSDK1 路径的警告来解决此问题。为此,我从 Header Search Paths (Build Settings>Search Paths) 中删除了相关路径并删除了 TestFlightSDK,现在一切正常。

              【讨论】:

                【解决方案17】:

                尝试重命名您的项目。我就是这样解决的。

                【讨论】:

                  【解决方案18】:

                  我认为这些解决方案中的很多都强制完全重建,这就是为我解决这个问题的原因。

                  我做了 Product => Clean,问题就消失了。

                  【讨论】:

                    【解决方案19】:

                    从回复来看,这种类型的错误有很多潜在的来源,所以这是我自己的错误版本(诚然粗心)(和简单的解决方案):

                    • XCode 项目构建设置可以设置在两个级别:项目级别和目标级别。对于那些不太熟悉的人,目标级别是您拥有可执行应用程序的地方,通常还有其他项目,例如动态库构建。
                    • 在 Build Settings 的 Linking 部分有一个 Mach-O Type 选项,您可以在其中设置 Executable、Dynamic Library、Static Library 等。
                    • 我在准备动态库时遇到问题,正在扫描项目的构建设置,发现 Mach-O 是空白的。所以我设置为动态库。然后,我继续查看了更多内容,却忘记了我已经进行了此更改。但我没有意识到我处于整体项目级别,而不是实际动态库的目标级别。这将所有目标 Mach-O 设置更改为动态库。
                    • 当然,可执行目标不喜欢被视为动态库,我收到了 OP 的错误消息。
                    • 在其目标级构建设置中将可执行文件设置回可执行 Mach-O 可修复所有问题。令人讨厌的是,项目级设置仍然表示动态库,但使用正确的目标级设置一切正常。

                    我知道这很傻,但是由于上面列出的一些更激进的解决方案可以间接解决这个错误,我想我会分享一下,以防其他人犯了同样的错误!

                    【讨论】:

                      【解决方案20】:

                      我解决这个错误的方法是在我的项目中添加一个虚拟函数。我的问题是我的应用没有自己的代码,只有链接代码

                      我有两个项目的不寻常情况:一个“应用”父级和一个“引擎”子级。所有可编译的代码都在子级中,父级简单地与子级链接,将大量特定于应用程序的资源复制到项目中。

                      显然这让 Xcode 感到难过,导致上述错误。

                      我的解决方案是将此 C 函数/文件添加到 App 项目中:

                      int workaround_for_xcode_reporting_cannot_run_on_selected_destination(){return 0;}

                      【讨论】:

                        【解决方案21】:

                        我从时间机器中恢复数据。请注意,这与 1 小时前存储的数据完全相同。问题从昨天开始。所以应该是完全相同的数据。\

                        但它确实有效。

                        【讨论】:

                          【解决方案22】:

                          对我来说这很有效:- 检查您的所有产品参考在设置和列表中是否一致。还要检查产品名称是否包含任何空格或其他“非法”字符。

                          【讨论】:

                          • 对我也有用 :-) 谢谢。
                          • 在 Bundle Name 中有一个空格是对我造成的!感谢您的提示。
                          【解决方案23】:

                          除了删除该目录下的所有文件 用户/your_usr_name/Library/Developer/Xcode/DerivedData/

                          我重新启动了我的 mac,它工作正常(重新启动 xcode 并且模拟器没有为我剪掉它)

                          【讨论】:

                          • 这里也一样。重新启动 Mac 终于做到了。
                          【解决方案24】:

                          它只是重复的 Info.plist 文件 只需在文件中使用 1 个 Info.plist 文件,然后重新启动 xcode 它对我来说是固定的

                          【讨论】:

                          • 最后你的回答解决了我的问题..yup..its 因为重复的 info.plist
                          【解决方案25】:

                          我尝试了这里提到的一切。没有任何效果。似乎我以某种方式导入了 Info.plist 两次。为了修复它,我选择了项目并按下“验证设置”按钮。之后它对我有用。

                          【讨论】:

                            【解决方案26】:

                            我从一开始就有这个问题,看起来模拟器无法处理虚拟智能卡是一个问题。不幸的是,我最终只使用通过 USB 连接的 Android 手机。

                            【讨论】:

                              【解决方案27】:

                              从 Copy Bundle Resource 构建阶段删除 Info.plist。这对我有用!

                              【讨论】:

                                【解决方案28】:

                                对我来说,它的 info.plist 重复条目导致了同样的问题。

                                从 info plist 中删除了图标文件三角形并正常工作。

                                【讨论】:

                                  【解决方案29】:

                                  经过半天的试验,我认为这意味着调试器找不到要启动的可执行文件。我认为这是与先前答案的一个重要区别,因为它是一个潜在的原因,可能有很多症状。在我的情况下,它无法为自定义构建协调应用程序 Info.plist,我们正在复制构建的 plist。我将构建设置更改为 AltDebug 的 Alt-Info.plist 并修复了它。也意味着不再复制。

                                  您的根本原因可能不同,所以关键是想想为什么 Xcode 可能无法找到您构建的应用程序。

                                  【讨论】:

                                    【解决方案30】:

                                    上面的一切都不起作用,但是这样做了:

                                    1. 确保您的所有(非忽略)文件都在 git 下

                                    2. 我的 .gitignore 看起来像这样

                                      *.xcworkspace
                                      xcuserdata
                                      .DS_Store
                                      Pods
                                      
                                    3. 在某处备份 MyProject.xcworkspace

                                    4. 删除 MyProject.xcworkspace 和 MyProject

                                    5. git reset --hard HEAD

                                    6. 将 MyProject.xcworkspace 复制回您的工作目录

                                    7. pod install

                                    8. 重建!

                                    【讨论】:

                                      猜你喜欢
                                      • 1970-01-01
                                      • 1970-01-01
                                      • 1970-01-01
                                      • 1970-01-01
                                      • 1970-01-01
                                      • 1970-01-01
                                      • 1970-01-01
                                      • 1970-01-01
                                      • 2012-03-28
                                      相关资源
                                      最近更新 更多