在为 iPhone 模拟器构建时,是否有一种简单的方法来清理 xcode 部署应用程序的目录?我有一个 sqlite 数据库,如果需要,它会在启动时复制到 Documents 文件夹中。问题是我可能会更改我的架构,但不会复制新数据库,因为一个已经存在。
理想情况下,每次我构建时,它都会破坏以前的内容。这可能吗,还是我必须手动完成?
在为 iPhone 模拟器构建时,是否有一种简单的方法来清理 xcode 部署应用程序的目录?我有一个 sqlite 数据库,如果需要,它会在启动时复制到 Documents 文件夹中。问题是我可能会更改我的架构,但不会复制新数据库,因为一个已经存在。
理想情况下,每次我构建时,它都会破坏以前的内容。这可能吗,还是我必须手动完成?
来自 Apple 开发资源:
要将模拟器的用户内容和设置设置为出厂状态并删除已安装的应用程序,请选择 Device > Erase All Content and Settings。
(在旧版本上:iPhone 模拟器 > 重置内容和设置。)
模拟器将应用程序安装到:
"$HOME/Library/Application Support/iPhone Simulator/User/Applications"
还要检查:
"$HOME/Library/Developer/CoreSimulator/Devices"
GUID 文件和目录与模拟器安装的应用程序相匹配。
手动删除所有这些文件/目录以从模拟器中删除所有应用程序。
我知道有一些方法可以将脚本添加到 XCode 的构建过程中。
此外,看起来 XCode 似乎更改了它在每个构建中使用的 GUID(我的应用程序所在的目录在 XCode 中的构建之间发生变化),因此尝试一直删除同一个目录是行不通的。如果您一次只在一个应用程序上工作,那么清除整个目录将是一种选择。
我这样做的方法是在模拟器中简单地单击并按住我的应用程序的图标 - 然后当它开始摆动时单击黑色和白色 (x)。将弹出一条消息,询问您是否真的要删除,然后单击“是”。下次您构建和部署应用程序时,它将顺利使用新的 sqlite db,您不必在文件系统中四处乱窜。
在 Mac OS X Lion 上的 iOS 5 之后,您可以尝试:
RemoveSimulatorApps.command
,其中包含:rm -rf "$HOME/Library/Application Support/iPhone Simulator/5.0/Applications/*"
PATH
.chmod +x RemoveSimulatorApps.command
这可能是矫枉过正但是..
您还可以使用菜单和“重置内容和设置...”
如果您更改了架构,您真正想做的是清除数据库。一种方法是检查你的 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 erase
从 Xcode 6 开始,您可以从命令行执行此操作:xcrun simctl erase
此外,iOS Simulator 应用程序(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>
<- 重置模拟器。
终端中的以下运行将清除所有模拟器,就像您刚刚安装它们一样。
$xcrun simctl erase all
我在运行模拟器/xcode 之前关闭它。
清除 Xcode 缓存;
Command+Option+Shift+K
命令+Shift+K
(同时使用它们,因为它们具有不同的功能)
清除派生数据内容;
菜单栏 -> 窗口 -> 管理器 -> 项目 -> 选择您的项目
右窗格显示文件夹的名称,右侧的删除按钮允许您删除所有派生数据内容。
清除模拟器缓存;
菜单栏 -> iOS 模拟器 -> 重置内容和设置
正如我在经过验证的答案下的评论中解释的那样:
我正在测试添加和删除日历订阅。在真实设备上,您可以在Settings、Accounts中删除日历订阅,但 iOS 模拟器中不存在此菜单,我不想重置整个模拟器。
因此,我最终使用 git 对我的Device文件夹进行本地版本控制,并在添加日历订阅后执行以下命令来删除它:
$ git reset HEAD --hard
$ git clean -f
所以步骤是:
~/Library/Developer/CoreSimulator/Devices/
并cd
对其执行操作,然后git init
创建一个 git 存储库git commit -a "Message"
git reset --hard HEAD
git commit
都消失了。在 XCode 中,转到 Window 菜单选项,选择 Devices,然后您可以删除不再需要的那些。
对于 Xcode <= 5
我将以下内容添加到我的~/.bash_profile
alias cleansim='rm -r ~/Library/Application\ Support/iPhone\ Simulator/5.1/Applications/*'
它只会破坏 sim 卡上的所有应用程序。