Xcode 4.5 不在模拟器或设备上运行/加载应用程序

Posted

技术标签:

【中文标题】Xcode 4.5 不在模拟器或设备上运行/加载应用程序【英文标题】:Xcode 4.5 doesn't run / load app on simulators or device 【发布时间】:2012-09-18 13:44:27 【问题描述】:

我在 2007 年中期 Mac Mini 上的 OS X Lion 10.7.5 上运行 Xcode 4.5。在我构建时模拟器和实际设备不运行应用程序之前,我遇到过这个问题。我正在使用 Phonegap 2.1、html、JS、Jquery Mobile 编写几个不同的应用程序。我按照OSX Daily 和SO How to fully remove Xcode 4 的说明重新安装了Xcode 2-3x。这工作了一段时间,但后来我的 300 GB SSD 驱动器死了,我不得不重新安装 OEM 120 GB 硬盘驱动器并重新安装 Xcode 和 Phonegap(自从驱动器被卸载后,两者都有 revved 版本)。现在我无法让 Xcode 启动模拟器或再次下载到我的 iPhone 4。我昨天再次完全卸载 Xcode 并重新安装。我第一次尝试构建时,下载 5.1 模拟器花了很长时间(* 请参阅下面的编辑),但最终“完成”,但仍然没有运行它们。尝试下载到我的手机,还是没有。

由于这是第三次或第四次发生这种情况,我想知道我做错了什么。显然我错过了一些东西,因为我没有看到这个问题在各种支持论坛上被尖叫,比如这里、谷歌或苹果,只有零碎的东西。

作为测试,我创建了一个简单的 PhoneGap 应用程序,其中除了 PG 创建的任何内容之外什么都没有,它不会运行模拟器或下载到我的手机上。同样的方法过去只用于测试系统,但不再适用。它构建得很好,并使方形“运行”按钮变暗几秒钟,然后按钮再次变亮,就像你停止了应用程序一样,就是这样。没有错误消息,没有构建错误,什么都没有。

英特尔正在更换我的 SSD 驱动器,所以当它到达这里时,我将不得不重新经历这一切,除非我可以在硬盘驱动器上运行一个工作副本,然后使用 Carbon Copy Cloner 克隆它,所以我可以把它复制到新驱动器上。

任何帮助将不胜感激,我真的希望不必持续处理这个问题。

*编辑:我最初删除了这个问题,因为我认为我做了一些愚蠢的事情,我意识到我下载了模拟器的文档,但没有下载实际模拟器时间>。我已经下载了 5.1 模拟器,但我仍然遇到同样的问题。

【问题讨论】:

我发现当我将手机更新到 ios 6 时,Xcode 4.4.1 将不再工作(通过 Xcode > Window > Organizer > Devices > my iPhone 发现),所以我正在更新到 Xcode但是,现在 4.5 并不能解释模拟器。更新完成后,我将更新此问题。 Organizer 中的错误消息是:“David”上的 iOS 版本与使用此 iOS SDK 安装支持开发的任何 iOS 版本不匹配。请将设备恢复到以下列出的操作系统版本,或更新到最新版本的 iOS SDK;可以在这里找到。 它变得更奇怪了,我已经更新到 Xcode 4.5,现在我的一些项目可以正常工作,而其他大多数项目仍然没有加载模拟器。我注意到那些确实加载的项目名称在您选择模拟器或设备的栏中。那些没有(几乎所有)的,有“CordovaLib”代替。我不知道项目之间有什么区别。在所有情况下,我都可以通过 Xcode > Open Developer Tool > iOS Simulator 强制打开模拟器,但我仍然无法将任何应用程序加载到模拟器中。 我有一个类似的问题,当我运行它时应用程序没有自动启动。该应用程序在我第一次创建它时自动启动,但在某个地方,它停止了发生。我发现这是因为我更改了“产品名称”。当我把它改回原来的产品名称时,它又自动启动了。我还没有时间弄清楚为什么会发生这种情况。无论如何,可能与您遇到的问题不完全相同,但我想我会提到它以防它对其他人有所帮助。 【参考方案1】:

当我尝试为 Phone Gap iOS 运行我的第一个 HelloWorld 应用程序时,我遇到了类似的情况。

我发现 Edit schema dialog 中缺少可执行文件。很奇怪,因为它运行了几次,然后它停止工作,直到我找到这个对话框。

您可以在Product -> Edit Scheme --> Info --> Executable 中找到此对话框(确保它不为空)。

尽管您找到了自己的解决方案,但这是一个可能对其他人有所帮助的快速检查。

【讨论】:

这个答案修复了它!谢谢。 太奇怪了,它会自动关闭。我有一个 Cordova 版本,删除并添加了 iOS 平台,它不再有可执行文件。【参考方案2】:

在关注之前,请阅读下面我编辑的 cmets

    退出 XCode 退出模拟器

    转到图像中的所有路径并删除所有这些文件夹

    打开模拟器并在 iOS 模拟器菜单中Reset content and settings。重置它

启动 XCode,您现在不必担心。

编辑

我在错误发生几天后再次遇到问题,所以我尝试了上述步骤,但没有任何反应 :(,第二次我在删除与xcode和模拟器相关的所有内容后重新安装了xcode并创建了一个新项目。对于一个干净的项目应用程序运行良好,但再次以相同的方式从旧项目中复制所有文件,再次面临同样的问题。那么如何我修好了?

您可能仍需要按照上述步骤操作,不确定这些是否有效。但我试图发现问题是从我从旧项目复制文件时开始的。

向新项目添加文件时,会出现一个对话框询问现有文件的位置,如果您看到带有 2 个radio buttonsfolders 选项,则默认选择Create group of any added folder (if needed)。一切都很顺利,直到我没有碰这些选项。

绿色:默认, 红色:用户选择

但是当我使用2nd radio button 表示Create folder references for any added folderResources 文件夹时,问题再次出现。当我删除此文件夹引用并清理项目时,应用程序运行良好。使用Create group of any added folder (if needed) 选项添加相同的文件夹也效果很好。每当我选择第一个单选按钮时,应用程序都会显示相同的问题。

我相信您了解difference between these 2 options,即yellow 的文件夹颜色和blue 的文件夹颜色!希望这对所有其他人也有帮助,但这真的很令人沮丧,我要求苹果尽快修复这个错误 :( :(

【讨论】:

【参考方案3】:

所以,我不确定这是不是真正的答案,但我似乎找到了一个可行的程序序列。

首先:我完全删除了 Xcode(再次),从头开始重新安装(再次),并更新了除 4.3 之外的所有模拟器以及命令行工具(Xcode > Preferences > Download > Components > All Simulators except 4.3 & the命令行工具)再次。

第二:我还重新安装了PhoneGap 2.1,但我不确定这是否必要,这更像是一场焦土战役。 Xcode 中的问题似乎源于方案,我不断得到名为“CordovaLib”的方案,而不是我的项目名称。如果您单击方案/模拟器按钮上的“CordovaLib”(左上角是列出可用方案和模拟器的位置,就在构建和停止按钮旁边),并将方案更改为有帮助的项目名称。

第三:您需要确保您的应用的位置设置为“唯一”。在 Xcode > Preferences > Locations > Locations (not Source Trees) > Derived Data > Advanced > Build Location == Unique > Done 处执行此操作。

这似乎有助于在 Xcode 中打开项目而不是从 Finder 启动它们,但我不相信这是真的,它只是 似乎 工作得更好,但我可以想象它。

如果我在以前遇到问题的项目上这样做,我现在可以将它们下载到模拟器和我的手机上。

这没有得到任何回应,但也许其他人会觉得它有用。

【讨论】:

【参考方案4】:

我不得不删除架构并重新创建;

    产品 >> 架构 >> 编辑架构。 然后管理方案。 然后点击“-”删除架构和 现在自动创建方案。

然后,在模拟器中,我重置设置。然后就成功了。

【讨论】:

【参考方案5】:

我通过将活动模式更改为 HelloWorld 而不是 CordovaLib 解决了这个问题。

Product->Scheme->HelloWorld - 确保勾选标记位于此项而不是 CordovaLib 旁边。

【讨论】:

【参考方案6】:

我必须转到产品 > 架构 > 编辑架构

然后在“运行”对话框中,“可执行文件”下拉菜单为“无”。我把它改成 .app 文件,它工作了!

【讨论】:

以上是关于Xcode 4.5 不在模拟器或设备上运行/加载应用程序的主要内容,如果未能解决你的问题,请参考以下文章

无法使用设备在 xcode 4.5 上运行我的代码

UITableView 不再使用 xCode 4.5 滚动,部署在 5.x 或 6.0

XCode - 模拟器/设备不尊重自动布局约束

URLCache 在 Xcode 模拟器上缓存 URL,但不在设备上

Xcode 4.5 - CopyPNGFile 仍然存在。需要新想法

iAd 显示在模拟器中,但不在设备上