110

在为 iPhone 模拟器构建时,是否有一种简单的方法来清理 xcode 部署应用程序的目录?我有一个 sqlite 数据库,如果需要,它会在启动时复制到 Documents 文件夹中。问题是我可能会更改我的架构,但不会复制新数据库,因为一个已经存在。

理想情况下,每次我构建时,它都会破坏以前的内容。这可能吗,还是我必须手动完成?

4

16 回答 16

133

来自 Apple 开发资源:

要将模拟器的用户内容和设置设置为出厂状态并删除已安装的应用程序,请选择 Device > Erase All Content and Settings

(在旧版本上:iPhone 模拟器 > 重置内容和设置。)

于 2010-08-09T16:59:40.663 回答
91

模拟器将应用程序安装到:

"$HOME/Library/Application Support/iPhone Simulator/User/Applications"

还要检查:

"$HOME/Library/Developer/CoreSimulator/Devices"

GUID 文件和目录与模拟器安装的应用程序相匹配。

手动删除所有这些文件/目录以从模拟器中删除所有应用程序。

我知道有一些方法可以将脚本添加到 XCode 的构建过程中。

此外,看起来 XCode 似乎更改了它在每个构建中使用的 GUID(我的应用程序所在的目录在 XCode 中的构建之间发生变化),因此尝试一直删除同一个目录是行不通的。如果您一次只在一个应用程序上工作,那么清除整个目录将是一种选择。

于 2009-03-28T02:59:15.083 回答
22

我这样做的方法是在模拟器中简单地单击并按住我的应用程序的图标 - 然后当它开始摆动时单击黑色和白色 (x)。将弹出一条消息,询问您是否真的要删除,然后单击“是”。下次您构建和部署应用程序时,它将顺利使用新的 sqlite db,您不必在文件系统中四处乱窜。

于 2009-08-06T11:27:21.257 回答
12

在 Mac OS X Lion 上的 iOS 5 之后,您可以尝试:

  1. 创建一个名为的脚本RemoveSimulatorApps.command,其中包含:
    rm -rf "$HOME/Library/Application Support/iPhone Simulator/5.0/Applications/*"
    
  2. 将此脚本保存到PATH.
  3. 使文件可执行,例如:
    chmod +x RemoveSimulatorApps.command

假设

  • 您可能希望从键盘收藏按钮调用它,例如在带有可编程键的 Logitech 或 Microsoft 键盘上(因此,将其保存为 .command 文件而不是 .sh)
  • 你可以把 iOS 模拟器中的所有东西都搞定(如果你只是在积极地开发一个应用程序,这是理想的选择)
  • 其他人的所有注释都适用于成为一个好的可升级应用程序等。(我个人觉得这很有用,但是 b/c 我有开发模式开关,可以在特定状态下重新加载数据库,我试图做一些一致的鲁棒性/错误处理)
于 2012-01-24T03:04:29.887 回答
8

这可能是矫枉过正但是..

您还可以使用菜单和“重置内容和设置...”

于 2009-09-10T14:24:19.050 回答
7

如果您更改了架构,您真正想做的是清除数据库。一种方法是检查你的 sqlite 表的版本,如果它已经改变,然后丢弃旧文件并使用捆绑包中的那个。

当您发布具有新架构的新版本时,寻找清理模拟器的方法无助于解决如何清理客户 iPhone 的现实问题。

另外,在确定遇到旧模式后,您可能希望在不破坏旧模式的情况下复制新数据库,并将任何有趣的数据从旧数据库中加载到新数据库中。然后吹掉旧数据库。这样,您可以保留用户对数据库的添加。

于 2009-04-02T05:43:15.960 回答
7

对于 Xcode >= 6

xcrun simctl list | grep -oh '[A-Z0-9]\{8\}-[A-Z0-9]\{4\}-[A-Z0-9]\{4\}-[A-Z0-9]\{4\}-[A-Z0-9]\{12\}' | xargs -n1 xcrun simctl erase
于 2015-07-24T07:09:05.233 回答
7

如果您使用的是 Xcode 9 ->菜单栏->硬件->擦除所有内容和设置

Xcode -> 硬件 -> 擦除所有内容和设置

于 2018-09-03T08:29:45.757 回答
5

从 Xcode 6 开始,您可以从命令行执行此操作:xcrun simctl erase

此外,iOS Simulator 应用程序(Xcode 6 版本和旧版本)有一个名为“重置内容和设置”的菜单项,可用于擦除当前启动的设备。

于 2014-09-10T06:49:07.717 回答
5

这适用于 Xcode 6:

xcrun simctl list | grep -oh '[A-Z0-9]\{8\}-[A-Z0-9]\{4\}-[A-Z0-9]\{4\}-[A-Z0-9]\{4\}-[A-Z0-9]\{12\}' | xargs -I{} xcrun simctl erase {}

对于 .bash_profile

alias cleansim="xcrun simctl list | grep -oh '[A-Z0-9]\{8\}-[A-Z0-9]\{4\}-[A-Z0-9]\{4\}-[A-Z0-9]\{4\}-[A-Z0-9]\{12\}' | xargs -I{} xcrun simctl erase {}"
于 2014-09-26T10:43:25.963 回答
4

从 Xcode 6 开始:

xcrun simctl erase <sim udid><- 重置模拟器。

于 2014-10-15T18:13:03.370 回答
2

终端中的以下运行将清除所有模拟器,就像您刚刚安装它们一样。

$xcrun simctl erase all

我在运行模拟器/xcode 之前关闭它。

于 2021-03-07T02:12:45.900 回答
1

清除 Xcode 缓存;

Command+Option+Shift+K

命令+Shift+K

(同时使用它们,因为它们具有不同的功能)

清除派生数据内容;

菜单栏 -> 窗口 -> 管理器 -> 项目 -> 选择您的项目

右窗格显示文件夹的名称,右侧的删除按钮允许您删除所有派生数据内容。

清除模拟器缓存;

菜单栏 -> iOS 模拟器 -> 重置内容和设置

于 2014-09-25T15:16:57.263 回答
1

正如我在经过验证的答案下的评论中解释的那样:

我正在测试添加和删除日历订阅。在真实设备上,您可以在SettingsAccounts中删除日历订阅,但 iOS 模拟器中不存在此菜单,我不想重置整个模拟器。

因此,我最终使用 git 对我的Device文件夹进行本地版本控制,并在添加日历订阅后执行以下命令来删除它:

$ git reset HEAD --hard
$ git clean -f

所以步骤是:

  1. 在 iOS 模拟器上安装你的应用程序并做你必须做的事情
  2. 识别您的设备~/Library/Developer/CoreSimulator/Devices/cd对其执行操作,然后git init创建一个 git 存储库
  3. 一旦你想保存状态,执行git commit -a "Message"
  4. 做任何更改设置(例如:添加日历订阅)并执行测试
  5. 关闭模拟器
  6. git reset --hard HEAD
  7. 启动模拟器,之后所做的所有更改git commit都消失了。
于 2016-08-05T13:34:07.197 回答
1

在 XCode 中,转到 Window 菜单选项,选择 Devices,然后您可以删除不再需要的那些。

于 2016-09-15T10:39:53.047 回答
0

对于 Xcode <= 5

我将以下内容添加到我的~/.bash_profile

alias cleansim='rm -r ~/Library/Application\ Support/iPhone\ Simulator/5.1/Applications/*'

它只会破坏 sim 卡上的所有应用程序。

于 2012-09-16T14:59:27.957 回答