清理iPhone模拟器

问题描述 投票:103回答:15

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

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

iphone xcode ios-simulator
15个回答
85
投票

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

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

还检查:

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

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

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

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

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


3
投票

从Xcode 6开始:

xcrun simctl erase <sim udid>


2
投票

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

Xcode -> Hardware -> Erase All Content and Settings


1
投票

清除Xcode缓存;

命令+ Option + Shift键+ K

命令+ Shift + K

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

清除派生数据内容;

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

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

清除模拟器缓存;

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


1
投票

正如我在validated answer的评论中解释的那样:

我正在测试添加和删除日历订阅。在真实设备上,您可以在“设置”,“帐户”中删除日历订阅,但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消失后完成所有更改。

1
投票

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


0
投票

对于Xcode <= 5

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

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

它只是核实了SIM卡上的所有应用程序。


130
投票

来自Apples Dev Resources:

要将模拟器的用户内容和设置设置为出厂状态并删除已安装的应用程序,请选择“iPhone模拟器”>“重置内容和设置”。

这类似于:

iOS Reset


21
投票

我这样做的方法是在模拟器中单击并按住我的应用程序的图标 - 然后当它开始摆动时单击黑白(x)。将弹出一条消息,询问您是否确实要删除,只需单击“是”。下次构建和部署应用程序时,它将毫不费力地使用新的sqlite数据库,您不必在文件系统中进行乱码。


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我有开发模式开关,在特定状态下重新加载数据库我试图做一些一致的健壮性/错误处理)

8
投票

它可能有点矫枉过正但是......

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


7
投票

如果您更改了架构,那么您真正要做的就是清除数据库。一种方法,从长远来看,当你开始发布你的应用程序的版本2.0,3.0等时,它会让你更快乐,检查你的sqlite表的版本,如果它已经改变,然后丢弃旧文件并使用捆绑中的文件。

找到一种清理模拟器的方法无法帮助解决当您使用新架构发布新版本时如何清理客户iPhone的现实问题。

对于额外的点,在确定您遇到旧架构之后,您可能希望复制新数据库而不破坏旧数据库,并将旧数据库中的任何有趣数据加载到新数据库中。然后吹走旧的数据库。这样,您可以保留用户对数据库的添加内容。


6
投票

对于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

5
投票

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

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


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 {}"
© www.soinside.com 2019 - 2024. All rights reserved.