清理 iPhone 模拟器

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

理想情况下,每次我构建时,它都会删除前面的内容。这可能吗,还是要我手动操作?

102848 次浏览

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

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

还要检查:

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

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

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

I know there is some way to add scripts to the build process in XCode.

Also it looks as if XCode changes the GUID it uses each build (the directory where my app sits changes between builds in XCode), so trying to delete the same directory all the time won't work. If you are only working on one app at a time then clearing out the entire directory would be an option.

如果您更改了模式,那么您真正要做的是清空数据库。这样做的一个方法是检查 sqlite 表的版本,如果它已经改变了,那么丢弃旧文件,使用捆绑包中的文件。

找到清理 Simulator 的方法无助于解决现实世界中的问题,即当您发布带有新模式的新版本时,如何清理客户的 iPhone。

对于额外的要点,在确定您遇到了一个旧模式之后,您可能希望在不破坏旧数据库的情况下复制新数据库,并将任何有趣的数据从旧数据库加载到新数据库中。然后把旧的数据库炸掉。这样就可以保存用户对数据库的添加。

The way I do this is to simply click and hold on the icon for my app in the simulator--then when it starts to wiggle click the black and white (x). A message will pop up asking whether you really want to delete and you just click yes. The next time you build and deploy your app it will use the new sqlite db without a hitch and you don't have to go muck around in the filesystem.

可能有点过了,但是。

你也可以使用菜单和“重置内容和设置... ...”

来自苹果开发资源:

若要将模拟器的用户内容和设置设置为工厂状态并删除已安装的应用程序,请选择 设备 > 删除所有内容和设置

(On older versions: iPhone Simulator > Reset Content and Settings.)

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

  1. 创建一个名为 RemoveSimulatorApps.command的脚本,其中包含:
    Rm-rf“ $HOME/Library/Application Support/iPhone Simulator/5.0/Applications/*”
    
  2. Save this script to a directory in your PATH.
  3. Make the file executable, such as:
    Chmod + x RemoveSimulatorApps.command 

Assumptions

  • 您可能希望从键盘收藏按钮调用它,例如在具有可编程键的 Logitech 或 Microsoft 键盘上(因此,将其保存为。命令文件,而不是说,。嘘)
  • 你可以把 iOS 模拟器里的所有东西都吹走(如果你只是在积极地开发一个应用程序,那就再理想不过了)
  • 所有来自其他人的说明都适用于作为一个好的可升级应用程序等(我个人发现这个很有用,尽管如此 b/c 我有开发模式开关,重新加载数据库在一个特定的状态,我试图做一些一致的健壮性/错误处理)

For Xcode <= 5

我在我的 ~/.bash_profile中添加了以下内容

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

它会核爆模拟器上所有的应用程序。

As of Xcode 6, you can do this from the command line with: xcrun simctl erase

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

清除 Xcode 缓存;

命令 + 选项 + 移位 + K

命令 + Shift + K

(Use both of them because they have different functionality)

清晰的派生数据内容;

菜单栏-> 窗口-> 组织者-> 项目-> 选择您的项目

Right Pane shows the name of folder and also delete button at the right side allows you to delete all derived data contents.

清除模拟器缓存;

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

This works with 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 {}"

从 Xcode 6开始:

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

for 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

正如我在 确认答案的评论中所解释的:

我正在测试添加和删除日历订阅。在真正的设备上,你可以删除 设定帐目中的日历订阅,但是这个菜单在 iOS 模拟器中不存在,我不想重置整个模拟器。

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

$ 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. Do git reset --hard HEAD
  7. 启动模拟器,在 git commit之后所做的所有更改都消失了。

在 XCode 中,转到“窗口”菜单选项,选择“设备”,然后就可以删除不再需要的设备。

如果您正在使用 Xcode 9-> 菜单栏-> < em > 硬件 -> 删除所有内容和设置

Xcode -> Hardware -> Erase All Content and Settings

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

$xcrun simctl erase all

运行之前关闭模拟器。

使用 Xcode 14.1和 iphone14模拟器,我像在 iPhone 上一样删除了这个应用程序。这会删除应用程序中的所有数据。重新生成时,“文档”文件夹中的所有数据都已删除。

Mac OS Ventura 13中 Xcode 14的解答

Open your simulator. You can do in your terminal: open -a simulator

然后就是 Device-> Erase All Content and Settings...

enter image description here