【问题标题】:Can I run my Expo app on multiple iOS Simulators at once?我可以一次在多个 iOS 模拟器上运行我的 Expo 应用程序吗?
【发布时间】:2019-05-24 07:06:11
【问题描述】:

是否可以同时在多个版本的 iOS 模拟器上运行 Expo 应用程序?要是能有两三部 iPhone 自动刷新就好了,这样就可以轻松测试不同屏幕尺寸的布局了。

(我知道我可以使用多个硬件设备来执行此操作,并且我知道我可以更改 iOS 模拟器应该使用的设备。)

【问题讨论】:

    标签: ios-simulator expo


    【解决方案1】:

    这个命令:

    expo-cli ios
    

    不允许您选择应该在其上运行的实际模拟器。

    假设 Expo viewer 应用程序已安装并使用默认端口,此命令允许您在特定模拟器上打开它:

    xcrun simctl openurl <some-device-id> exp://127.0.0.1:19000
    

    在多个模拟器上运行 Expo

    它可以同时在多个模拟器上运行。

    由于每天从头开始重新启动选定的模拟器有点麻烦,这里有一个小的 shell 脚本,它会根据它们的设备 ID 自动启动三个特定的模拟器,并在它们上打开 Expo 应用程序:

    #!/bin/bash
    declare -a simulators=("0FAE2F92-9EF7-4C4A-8F9D-097A056F8CC0" "BFCDD662-E4DE-4C08-9DF6-CAACA7C00CEC" "1A6959A0-C10F-474B-96C5-7E8955FBDD80")
    
    for i in "${simulators[@]}"
    do
        xcrun instruments -w $i
        #xcrun simctl install $i ~/.expo/ios-simulator-app-cache/Exponent-2.14.0.app
        xcrun simctl openurl $i exp://127.0.0.1:19000      
    done
    

    在这里,您可以在一个数组中看到三个不同的模拟器设备 ID。当然,您必须使用您自己要使用的模拟器的设备 ID。

    顺便说一句:如果您曾经安装过 Exponent-x.x.x.app,它可以在您主目录的隐藏文件夹中找到。所以通过调用:

    xcrun simctl install <some-device-id> ~/.expo/ios-simulator-app-cache/Exponent-2.14.0.app
    

    您甚至可以通过命令行在特定模拟器中安装 Expo 应用程序(另请参阅上面 shell 脚本中的注释行)。

    注意:Exponent-2.14.0.app 版本会随着 Expo SDK 的升级而改变。 Exponent-2.14.0.app 随附 expo-cli --version 3.13.1,截至 2020 年 2 月 22 日。

    如何确定模拟器 ID

    xcrun simctl list
    

    这将显示每个模拟器的相应设备 ID。

    小提示:随着时间的推移,有几个模拟器条目在升级后不再可用。要使用简单的命令删除它们,请执行以下操作:

    xcrun simctl delete unavailable
    

    演示

    这是一个简短的脚本演示:

    • 三个模拟器启动
    • Expo 应用程序已打开

    然后更改演示应用程序的源代码。所有三个模拟器都会同时更新。

    【讨论】:

    • 史蒂芬,回答得非常透彻。我希望它能够影响到更多的人,而不仅仅是我。
    • 这确实是一种处理模拟器的有趣方式。也感谢您的脚本!
    • 精彩的答案@stephen。我已经编辑了答案以更新 expo 应用程序版本。有没有办法使用 glob 或一些匹配的模式,以便将来可以工作? Expo.*\.app 将粗略猜测什么会起作用。想法?对不起,在这里 bash n00b。
    • 快捷方式:如果你传入了错误的设备ID(即上面脚本中的那些),mac会告诉你它找不到它们,但它会列出所有可用的模拟器和ID所以你可以从终端复制它们,而不必进入 xcode 并找到它们。
    【解决方案2】:

    已接受的答案在 2021 年不起作用,因为 Xcode 13 中不再提供“工具”。

    请按照以下说明进行操作:

    将设备 ID 替换为您的设备 ID xcrun simctl list。此外,将 Expo 版本替换为您机器上的版本。

    #!/bin/zsh
    declare -a simulators=("27D6B718-8348-4C4D-ADFC-6506C2A88EED" "531A59B8-6197-4620-904B-E55308D1EE96" "C08532FE-3CE4-4BB7-A04C-795F2FA7EFE1")
    echo "STARTED"
    open -a Simulator
    wait_time=1
    for i in $simulators[@]
    do
        echo "Boot $i"
        xcrun simctl boot $i
        sleep $wait_time
        echo "Install Expo $i"
        xcrun simctl install $i ~/.expo/ios-simulator-app-cache/Exponent-2.19.6.tar.app
        sleep $wait_time
        echo "Lauch Expo $i"
        xcrun simctl openurl $i exp://127.0.0.1:19000
        sleep $wait_time
    done
    echo "FINISHED"
    

    【讨论】:

      猜你喜欢
      • 2014-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-30
      • 1970-01-01
      • 2018-04-04
      • 1970-01-01
      • 2020-01-07
      相关资源
      最近更新 更多