【发布时间】:2013-02-28 04:47:01
【问题描述】:
是否有任何选项可以重置所有模拟器的内容和设置?在单个事件或通过命令行的单个命令中?
【问题讨论】:
标签: iphone ipad ios-simulator
是否有任何选项可以重置所有模拟器的内容和设置?在单个事件或通过命令行的单个命令中?
【问题讨论】:
标签: iphone ipad ios-simulator
根据 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
【讨论】:
受 Daniel Wood 回答的启发,我想出了这个。
它解决了如何处理正在运行的模拟器的问题。我们的 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之前运行killall "Simulator"
你可以运行这个命令
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
【讨论】: