【问题标题】:Reset the contents and settings all iOS-simulators重置所有 iOS 模拟器的内容和设置
【发布时间】:2013-02-28 04:47:01
【问题描述】:

是否有任何选项可以重置所有模拟器的内容和设置?在单个事件或通过命令行的单个命令中?

【问题讨论】:

    标签: iphone ipad ios-simulator


    【解决方案1】:

    根据 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
    

    【讨论】:

    • 您在正则表达式的末尾忘记了 " 字符。无法编辑一个角色,所以我只是评论:)
    • 你好丹尼尔。这完美地工作,但它停止为 xcode7 工作。我认为您需要更改正则表达式
    【解决方案2】:

    在 Xcode 6 中,您可以使用 simctl 命令行实用程序:

    xcrun simctl erase <device UDID>
    

    使用 Xcode 7,您可以一次擦除所有内容:

    xcrun simctl erase all
    

    【讨论】:

    • 对于阅读这些答案的任何人,我会说这绝对是一个比简单地使用 rm -rf 破坏应用程序支持 iPhone 模拟器文件夹更好的选择。
    【解决方案3】:

    【讨论】:

    • 你的意思不是“确定的”吗?
    • 谢谢,确实很有用。但不幸的是,它对我不起作用。 (XCode 4.6.1)
    • Yossi,使用 Github 问题记录错误并请求修复。我非常乐意为您提供帮助,但请使用 Github 问题进行进一步沟通。
    【解决方案4】:

    使用 Xcode 10:

    #!/usr/bin/env sh
    
    xcrun simctl shutdown all
    xcrun simctl erase all
    

    【讨论】:

      【解决方案5】:

      受 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 测试。

      【讨论】:

      • 太棒了,我不知道有一个 xcrun 'shutdown' 参数。谢谢。
      • 这应该是新接受的答案。让我们停用 Definitive iOS Simulator 重置脚本 ;)
      【解决方案6】:

      使用最新版本的 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

      【讨论】:

      • 这适用于 Xcode 6 和 7,并且比任何 3rd 方脚本都简单得多。
      • xcrun simctl erase all之前运行killall "Simulator"
      【解决方案7】:

      你可以运行这个命令 xcrun simctl erase all

      【讨论】:

      • 实际上,这确实提供了问题的确切答案。
      【解决方案8】:

      只需转到~/Library/Application Support/iPhone Simulator 并删除那里的所有内容。上述方法不适用于 iOS 7,所以这似乎对我有用。

      【讨论】:

        【解决方案9】:

        我编写了一个脚本,它将重置 iOS 模拟器的所有版本和设备的内容和设置。它从菜单中获取设备名称和版本号,因此它将包括 Apple 为其发布模拟器的任何新设备或 iOS 版本。

        手动运行或在构建脚本中使用很容易。我建议在构建之前将其添加为 Pre-Action Run Script。

        它在很大程度上基于上面 Stian 的脚本,但不会在新的 iOS 版本中变得陈旧,并且消除了对话框(更适合自动化构建脚本)。

        https://github.com/michaelpatzer/ResetAllSimulators

        【讨论】:

          【解决方案10】:
          xcrun simctl erase all
          xcrun simctl delete unavailable
          

          【讨论】:

            【解决方案11】:

            有一个工具 xctool - https://github.com/facebook/xctool 是 xcodebuild 的替代品。它允许从命令行构建应用程序并为其运行测试。除了运行测试之外,它还允许提供诸如 -freshSimulator 和 -freshInstall 之类的参数,以便在执行测试之前为目标模拟器重置内容。这简化了模拟器的大量重置,因为您可以避免使用 bash 脚本等各种魔法,以及封装在工具中的所有内容。

            【讨论】:

              【解决方案12】:

              1) 退出所有模拟器

              2) 在终端中运行以下命令 xcrun simctl erase all

              【讨论】:

                【解决方案13】:

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

                【讨论】:

                • 这只会重置一个。他没有问这个:)他要求一次重置多个!
                • 所以他不能直接做。可以编写一个 bash schript / apple 脚本来直接修改文件系统....所有模拟程序都在 ~/Library/Application Support/iPhone Simulator/%VERSION%
                【解决方案14】:

                你可以调用这个命令:

                rm -rf ~/Library/Application Support/iPhone Simulator
                

                【讨论】:

                  猜你喜欢
                  • 2014-11-18
                  • 1970-01-01
                  • 2017-04-01
                  • 1970-01-01
                  • 2013-11-12
                  • 2012-09-08
                  • 2014-08-21
                  • 1970-01-01
                  • 2011-10-11
                  相关资源
                  最近更新 更多