是否有任何选项可以重置所有模拟器的内容和设置?在单个事件或通过命令行的单个命令中?
14 回答
根据 Jeremy Huddleston Sequoia 的回答,我编写了一个将重置所有模拟器的 shell 脚本。
对于Xcode 7,您可以使用:
#!/bin/sh
instruments -s devices \
| grep "(\d[.0-9]\+) \[[0-9A-F]\{8\}-[0-9A-F]\{4\}-[0-9A-F]\{4\}-[0-9A-F]\{4\}-[0-9A-F]\{12\}\]" \
| grep -o "[0-9A-F]\{8\}-[0-9A-F]\{4\}-[0-9A-F]\{4\}-[0-9A-F]\{4\}-[0-9A-F]\{12\}" \
| while read -r line ; do
echo "Reseting Simulator with UDID: $line"
xcrun simctl erase $line
done
对于以前的版本,请使用:
#!/bin/sh
instruments -s devices \
| grep Simulator \
| grep -o "[0-9A-F]\{8\}-[0-9A-F]\{4\}-[0-9A-F]\{4\}-[0-9A-F]\{4\}-[0-9A-F]\{12\}" \
| while read -r line ; do
echo "Reseting Simulator with UDID: $line"
xcrun simctl erase $line
done
使用 Xcode 6,您可以使用 simctl 命令行实用程序:
xcrun simctl erase <device UDID>
使用 Xcode 7,您可以一次擦除所有内容:
xcrun simctl erase all
使用 Xcode 10:
#!/usr/bin/env sh
xcrun simctl shutdown all
xcrun simctl erase all
受丹尼尔伍德回答的启发,我想出了这个。
它解决了如何处理正在运行的模拟器的问题。我们的 CI 环境在测试运行后让模拟器继续运行,随着时间的推移,它变得越来越脏。
guid 检测并不准确,但我认为在可读性上进行权衡是值得的。
#!/bin/bash
xcrun simctl list | grep Booted | grep -e "[0-9A-F\-]\{36\}" -o | xargs xcrun simctl shutdown
xcrun simctl erase all
使用 XCode 7 测试。
使用最新版本的 Xcode 命令行工具,您可以调用xcrun simctl erase all
确保每次调用此函数时都退出 sim,否则会出现错误提示An error was encountered processing the command (domain=com.apple.CoreSimulator.SimError, code=159):
Unable to erase contents and settings in current state: Booted
你可以运行这个命令
xcrun simctl erase all
只需转到~/Library/Application Support/iPhone Simulator
并删除那里的所有内容。上述方法不适用于 iOS 7,所以这似乎对我有用。
我编写了一个脚本,它将重置 iOS 模拟器的所有版本和设备的内容和设置。它从菜单中获取设备名称和版本号,因此它将包括 Apple 为其发布模拟器的任何新设备或 iOS 版本。
它很容易手动运行或在构建脚本中使用。我建议在构建之前将其添加为 Pre-Action Run Script。
它主要基于上述 Stian 的脚本,但不会在新的 iOS 版本中变得陈旧,并且消除了对话框(更适合自动化构建脚本)。
xcrun simctl erase all
xcrun simctl delete unavailable
有一个工具 xctool - https://github.com/facebook/xctool是 xcodebuild 的替代品。它允许从命令行构建应用程序并为其运行测试。除了运行测试之外,它还允许提供诸如 -freshSimulator 和 -freshInstall 之类的参数,以便在执行测试之前为目标模拟器重置内容。这简化了模拟器的大量重置,因为您可以避免使用 bash 脚本等各种魔法,以及封装在工具中的所有内容。
1) 退出所有模拟器
2)在终端中运行以下命令
xcrun simctl erase all
要将模拟器的用户内容和设置设置为出厂状态并删除已安装的应用程序,请选择 iPhone Simulator > Reset Content and Settings。
你可以调用这个命令:
rm -rf ~/Library/Application Support/iPhone Simulator