清理iPhone模拟器
有没有一种简单的方法来清理xcode在构buildiPhone模拟器时部署应用程序的目录? 我有一个sqlite数据库,如果有必要,在启动时复制到文档文件夹。 问题是,我可能会改变我的模式,但新的数据库不会被复制,因为已经存在。
理想情况下,我每次构build时都会破坏以前的内容。 这是可能的,还是我必须手动做到这一点?
模拟器将应用程序安装到:
"$HOME/Library/Application Support/iPhone Simulator/User/Applications"
另请检查:
"$HOME/Library/Developer/CoreSimulator/Devices"
GUID文件和目录与模拟器安装的应用程序相匹配。
手动删除所有这些文件/目录以从模拟器中删除所有应用程序。
我知道有一些方法可以将脚本添加到XCode中的构build过程中。
此外,它看起来好像XCode更改每个构build使用的GUID(我的应用程序在XCode中构build之间的变化所在的目录),所以试图一直删除相同的目录将不起作用。 如果您一次只能在一个应用程序上工作,那么清理整个目录将是一个选项。
来自苹果开发资源:
要将模拟器的用户内容和设置设置为出厂状态并删除已安装的应用程序,请selectiPhone模拟器>重置内容和设置 。
这类似于:
我这样做的方法是只需在模拟器中单击并按住我的应用程序的图标 – 然后当它开始摆动时单击黑白(x)。 会popup一个消息,询问你是否真的要删除,只需点击是。 下一次构build和部署应用程序时,它将使用新的sqlite数据库,而不必在文件系统中混乱。
在Mac OS X Lion上的iOS 5之后,您可以尝试:
- 创build一个名为
RemoveSimulatorApps.command
的脚本,其中包含:rm -rf“$ HOME / Library / Application Support / iPhone Simulator / 5.0 / Applications / *”
- 将此脚本保存到
PATH
的目录。 - 使文件可执行,例如:
chmod + x RemoveSimulatorApps.command
假设
- 您可能希望从键盘collections夹button(如带有可编程键的Logitech或Microsoft键盘)调用此function(因此,将其保存为.command文件而不是.sh)
- 你可以把iOS模拟器里的所有东西都吹走(理想情况下,如果你只是在使用一个应用程序)
- 所有从其他人的笔记申请有关是一个很好的升级应用程序等(我个人发现这个有用的但是B / C我有开发模式开关重新加载数据库在一个特定的状态,我试图做一些稳定性/error handling一致性)
它可能是矫枉过正,但..
您也可以使用菜单和“重置内容和设置…”
你真正想要做的是清除你的数据库,如果你已经改变了架构。 一种方式来做到这一点,它会让你长期开始运行你的应用程序的版本2.0,3.0等,更快乐的是检查你的sqlite表的版本,如果它已经改变,然后放弃旧的文件,并使用你的包中的一个。
寻找一种方法来清理模拟器将不会帮助真正的世界如何清理客户的iPhone的问题,当你运送一个新的模式的新版本。
对于额外的点,在确定您遇到旧的模式之后,您可能希望复制新的数据库而不破坏旧的数据库,并将任何感兴趣的数据从旧数据库中加载到新的数据库中。 然后吹走旧的数据库。 这样你可以保留你的用户添加到数据库。
对于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 delete
从Xcode 6开始,您可以通过命令行执行以下操作:xcrun simctl erase
此外,iOS模拟器应用程序(包括Xcode 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 -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>
< – 重置模拟器。
清除Xcodecaching;
命令+ Option + Shift键+ K
命令+ Shift + K
(使用他们两个,因为他们有不同的function)
清除派生数据内容;
菜单栏 – >窗口 – >pipe理器 – >项目 – >select您的项目
右窗格显示文件夹的名称,右边的删除button允许您删除所有派生的数据内容。
清除模拟器caching;
菜单栏 – > iOS模拟器 – >重置内容和设置
正如我在validation的答案下的评论中解释的那样:
我正在testing添加和删除日历订阅。 在真实的设备上,您可以在“设置” ,“ 帐户 ”中删除日历订阅,但是此菜单在iOS模拟器中不存在,我不想重置整个模拟器。
所以我最终在本地版本化我的设备文件夹与git和执行以下命令删除日历订阅后,我添加它:
$ git reset HEAD --hard $ git clean -f
所以步骤是:
- 在iOS模拟器上安装你的应用程序,并做你必须做的
- 在
~/Library/Developer/CoreSimulator/Devices/
你的~/Library/Developer/CoreSimulator/Devices/
,然后用git init
来创build一个git仓库 - 一旦你想保存状态,执行
git commit -a "Message"
- 做任何改变的设置(例如:添加日历订阅)并执行您的testing
- closures模拟器
- 做
git reset --hard HEAD
- 启动模拟器,
git commit
后所做的所有更改都消失了。
在XCode中,转到“窗口”菜单选项,select“设备”,然后删除不再需要的设备。
对于Xcode <= 5
我将以下内容添加到我的~/.bash_profile
alias cleansim='rm -r ~/Library/Application\ Support/iPhone\ Simulator/5.1/Applications/*'
它只是模拟了所有的模拟应用程序。