清理iPhone模拟器

时间:2009-03-28 02:37:21

标签: iphone xcode ios-simulator

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

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

16 个答案:

答案 0 :(得分:130)

来自Apples Dev Resources:

  

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

这类似于:

iOS Reset

答案 1 :(得分:85)

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

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

同时检查:

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

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

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

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

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

答案 2 :(得分:21)

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

答案 3 :(得分:12)

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

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

    • 您可能希望从键盘收藏夹按钮调用此按钮,例如在具有可编程键的Logitech或Microsoft键盘上(因此,将其另存为.command文件而不是.sh)
    • 你可以吹掉iOS模拟器中的所有内容(如果你只是积极地在一个应用程序上工作,这是理想的选择)
    • 其他人的所有注释都适用于成为一个好的可升级应用程序等。(我个人觉得这很有用但是我有开发模式开关,在特定状态下重新加载数据库我试图做一些一致的稳健性/错误处理上)

答案 4 :(得分:8)

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

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

答案 5 :(得分:7)

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

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

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

答案 6 :(得分: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

答案 7 :(得分:5)

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

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

答案 8 :(得分: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 {}"

答案 9 :(得分:3)

从Xcode 6开始:

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

答案 10 :(得分:2)

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

Xcode -> Hardware -> Erase All Content and Settings

答案 11 :(得分:1)

清除Xcode缓存;

  

命令+选项+ SHIFT + K

     

命令+ SHIFT + K

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

清除派生数据内容;

  

菜单栏 - &gt;窗口 - &gt;组织者 - &gt;项目 - &gt;选择您的项目

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

清除模拟器缓存;

  

菜单栏 - &gt; iOS模拟器 - &gt;重置内容和设置

答案 12 :(得分:1)

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

我正在测试添加和删除日历订阅。在真实设备上,您可以在设置帐户中删除日历订阅,但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. git reset --hard HEAD
  7. 启动模拟器,在git commit消失后完成所有更改。

答案 13 :(得分:1)

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

答案 14 :(得分:1)

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

$xcrun simctl erase all

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

答案 15 :(得分:0)

对于Xcode&lt; = 5

我在~/.bash_profile

中添加了以下内容
alias cleansim='rm -r ~/Library/Application\ Support/iPhone\ Simulator/5.1/Applications/*'

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