【问题标题】:React Native Change Default iOS Simulator DeviceReact Native 更改默认 iOS 模拟器设备
【发布时间】:2016-09-16 16:06:52
【问题描述】:

当我运行这个命令时:

react-native run-ios

我的应用默认运行在 iPhone6 模拟器设备上:

Found Xcode project RN.xcodeproj
Launching iPhone 6 (9.2)...

如何让应用默认在不同的模拟器设备(如 iPhone5s)上运行?

【问题讨论】:

  • Xcode --> 产品 --> 目的地 ??
  • 我不知道如何设置默认设备,但是在运行react-native run-ios 之后,您可以更改Simulator > Hardware > Device > iOS x.x > iPhone 5 中的设备。这将一直有效,直到您退出模拟器。

标签: ios react-native


【解决方案1】:

使用--simulator 标志指定模拟器。

这些是适用于 iOS 14.0 及更高版本的设备:

npx react-native run-ios --simulator="iPhone 8"
npx react-native run-ios --simulator="iPhone 8 Plus"
npx react-native run-ios --simulator="iPhone 11"
npx react-native run-ios --simulator="iPhone 11 Pro"
npx react-native run-ios --simulator="iPhone 11 Pro Max"
npx react-native run-ios --simulator="iPhone SE (2nd generation)"
npx react-native run-ios --simulator="iPhone 12 mini"
npx react-native run-ios --simulator="iPhone 12"
npx react-native run-ios --simulator="iPhone 12 Pro"
npx react-native run-ios --simulator="iPhone 12 Pro Max"
npx react-native run-ios --simulator="iPhone 13 Pro"
npx react-native run-ios --simulator="iPhone 13 Pro Max"
npx react-native run-ios --simulator="iPhone 13 mini"
npx react-native run-ios --simulator="iPhone 13"
npx react-native run-ios --simulator="iPod touch (7th generation)"
npx react-native run-ios --simulator="iPad Pro (9.7-inch)"
npx react-native run-ios --simulator="iPad (9th generation)"
npx react-native run-ios --simulator="iPad Air (4th generation)"
npx react-native run-ios --simulator="iPad Pro (11-inch) (3rd generation)"
npx react-native run-ios --simulator="iPad Pro (12.9-inch) (5th generation)"
npx react-native run-ios --simulator="iPad mini (6th generation)"

列出所有可用的 iOS 设备:

xcrun simctl list devices

目前无法设置默认值。

React Native Docs: Running On Simulator

【讨论】:

  • 非常有帮助
  • 如果你愿意的话; react-native run-ios --simulator="iPad Air"
  • 要查看您可以使用的所有可用设备xcrun simctl list devices 更多信息here
  • 以防万一您有多个同名模拟器,例如 iPhone 6s for ios 11 ,iPhone 6s for ios 12 等,那么您可以从 Xcode -> Window -> Devices 为模拟器设置特定名称和模拟器
  • 如果您需要特定的操作系统版本,请将其添加到括号中:react-native run-ios --simulator="iPhone 11 Pro Max (13.4)"
【解决方案2】:

您也可以为此使用 npm,方法是在您的 package.json 文件的 scripts 元素中添加一个条目。例如

"launch-ios": "react-native run-ios --simulator \"iPad Air 2\""

然后使用这个:npm run launch-ios

【讨论】:

  • 恕我直言,这是最好的答案,因为它允许您将配置存储在代码/版本控制中。意味着您不需要记住命令行语法。
  • 我同意这个答案。您也可以使用单引号:"launch-ios": "react-native run-ios --simulator 'iPad Air 2'"
【解决方案3】:

您可以在 ~/.bash_profile 文件中创建别名:

alias rn-ios="react-native run-ios --simulator \"iPhone 5s (10.0)\""

然后使用创建的别名运行 react-native:

$ rn-ios

【讨论】:

    【解决方案4】:

    追捕有项目设置:

    {project}/node_modules/react-native/local-cli/runIOS/runIOS.js

    module.exports 下有一些选项,包括:

    options: [{ command: '--simulator [string]', description: 'Explicitly set simulator to use', default: 'iPhone 7', }

    我的是第 231 行,只需将其设置为有效安装的模拟器并运行 react-native run-ios 默认会运行到那个模拟器。

    【讨论】:

    • 这确实有效,尽管文件隐藏在 {project}/node_modules/react-native/local-cli/runIOS/
    • 很好的解决方案。谢谢!
    • 我实际上在节点模块文件夹下没有那个模块。
    • 是的,将"runArguments": [ "--simulator", "iPhone 5s" ] 添加到我的启动配置中效果很好。
    【解决方案5】:

    有多种方法可以实现这一点:

    1. 通过使用--simulator 标志
    2. 通过使用--udid 标志

    首先,您需要列出所有可用的设备。列出所有运行的设备

    xcrun simctl list devices
    

    这将给出如下输出:

    这些是适用于 iOS 13.0 及更高版本的设备:

    == Devices ==
    -- iOS 13.6 --
        iPhone 8 (5C7EF61D-6080-4065-9C6C-B213634408F2) (Shutdown) 
        iPhone 8 Plus (5A694E28-EF4D-4CDD-85DD-640764CAA25B) (Shutdown) 
        iPhone 11 (D6820D3A-875F-4CE0-B907-DAA060F60440) (Shutdown) 
        iPhone 11 Pro (B452E7A1-F21C-430E-98F0-B02F0C1065E1) (Shutdown) 
        iPhone 11 Pro Max (94973B5E-D986-44B1-8A80-116D1C54665B) (Shutdown) 
        iPhone SE (2nd generation) (90953319-BF9A-4C6E-8AB1-594394AD26CE) (Booted) 
        iPad Pro (9.7-inch) (9247BC07-00DB-4673-A353-46184F0B244E) (Shutdown) 
        iPad (7th generation) (3D5B855D-9093-453B-81EB-B45B7DBF0ADF) (Shutdown) 
        iPad Pro (11-inch) (2nd generation) (B3AA4C36-BFB9-4ED8-BF5A-E37CA38394F8) (Shutdown) 
        iPad Pro (12.9-inch) (4th generation) (DBC7B524-9C75-4C61-A568-B94DA0A9BCC4) (Shutdown) 
        iPad Air (3rd generation) (03E3FE18-AB46-481E-80A0-D37383ADCC2C) (Shutdown) 
    -- tvOS 13.4 --
        Apple TV (41579EEC-0E68-4D36-9F98-5822CD1A4104) (Shutdown) 
        Apple TV 4K (B168EF40-F2A4-4A91-B4B0-1F541201479B) (Shutdown) 
        Apple TV 4K (at 1080p) (D55F9086-A56E-4893-ACAD-579FB63C561E) (Shutdown) 
    -- watchOS 6.2 --
        Apple Watch Series 4 - 40mm (D4BA8A57-F9C1-4F55-B3E0-6042BA7C4ED4) (Shutdown) 
        Apple Watch Series 4 - 44mm (65D5593D-29B9-42CD-9417-FFDBAE9AED87) (Shutdown) 
        Apple Watch Series 5 - 40mm (1B73F8CC-9ECB-4018-A212-EED508A68AE3) (Shutdown) 
        Apple Watch Series 5 - 44mm (5922489B-5CF9-42CD-ACB0-B11FAF88562F) (Shutdown) 
    

    然后,您可以从输出中选择名称或 uuid,然后根据需要继续操作。

    1. 使用--simulator运行运行:
    npx react-native run-ios --simulator="iPhone SE"
    
    1. 使用--udid 标志运行:
    npx react-native run-ios --udid 90953319-BF9A-4C6E-8AB1-594394AD26CE
    

    希望这个回答对你有所帮助。

    【讨论】:

    • 这是最好的答案,也是最直接的一个....谢谢
    • 我设法在我的设备上从 Xcode 运行应用程序,但是当我运行 npx react-native run-ios 时,它总是在模拟器上运行。 npx react-native run-ios --udid [device id] 为我解决了问题。谢谢! +1
    【解决方案6】:

    1) 重命名你的模拟器,如果模拟器名称相同但iOS版本不同

    Xcode -> Window -> Devices and Simulators -> Simulators.
    

    2) 打开你的 react native 项目文件夹

    3) 编辑 package.json

    "scripts": {
        "start": "node node_modules/react-native/local-cli/cli.js start",
        "test": "jest",
        "flow": "node_modules/.bin/flow",
        "start-iphone6": "react-native run-ios --simulator \"iPhone 6 11.3\""
    }
    

    4)npm run start-iphone6

    【讨论】:

      【解决方案7】:

      正如 Ian L 所回答的,我也使用 NPM 来管理我的脚本。

      示例:

      {
        "scripts": {
          "ios": "react-native run-ios --simulator=\"iPad Air 2\"",
          "devices": "xcrun simctl list devices"
        }
      }

      这样,我可以快速得到我需要的东西:

      1. 列出所有设备:npm run devices
      2. 运行默认模拟器:npm run ios

      【讨论】:

        【解决方案8】:

        这是改变iOS模拟器的新途径,你只需要改变

        default: 'iPhone 6' or something else 
        

        路径:

        <project_root>/node_modules/@react-native-community/cli/build/commands/runIOS/runIOS.js
        

        【讨论】:

        • 在我的案例文件中:node_modules/@react-native-community/cli-platform-ios/build/commands/runIOS/index.js
        【解决方案9】:

        使用此命令获取设备列表

        xcrun simctl list devices
        

        控制台

        == Devices ==
        -- iOS 13.5 --
            iPhone 6s (9981E5A5-48A8-4B48-B203-1C6E73243E83) (Shutdown) 
            iPhone 8 (FC540A6C-F374-4113-9E71-1291790C8C4C) (Shutting Down) 
            iPhone 8 Plus (CAC37462-D873-4EBB-9D71-7C6D0C915C12) (Shutdown) 
            iPhone 11 (347EFE28-9B41-4C1A-A4C3-D99B49300D8B) (Shutting Down) 
            iPhone 11 Pro (5AE964DC-201C-48C9-BFB5-4506E3A0018F) (Shutdown) 
            iPhone 11 Pro Max (48EE985A-39A6-426C-88A4-AA1E4AFA0133) (Shutdown) 
            iPhone SE (2nd generation) (48B78183-AFD7-4832-A80E-AF70844222BA) (Shutdown) 
            iPad Pro (9.7-inch) (2DEF27C4-6A18-4477-AC7F-FB31CCCB3960) (Shutdown) 
            iPad (7th generation) (36A4AF6B-1232-4BCB-B74F-226E025225E4) (Shutdown) 
            iPad Pro (11-inch) (2nd generation) (79391BD7-0E55-44C8-B1F9-AF92A1D57274) (Shutdown) 
            iPad Pro (12.9-inch) (4th generation) (ED90A31F-6B20-4A6B-9EE9-CF22C01E8793) (Shutdown) 
            iPad Air (3rd generation) (41AD1CF7-CB0D-4F18-AB1E-6F8B6261AD33) (Shutdown) 
        -- tvOS 13.4 --
            Apple TV 4K (51925935-97F4-4242-902F-041F34A66B82) (Shutdown) 
        -- watchOS 6.2 --
            Apple Watch Series 5 - 40mm (7C50F2E9-A52B-4E0D-8B81-A811FE995502) (Shutdown) 
            Apple Watch Series 5 - 44mm (F7D8C256-DC9F-4FDC-8E65-63275C222B87) (Shutdown) 
        

        此处选择不带 ID 的 Simulator 字符串是一个示例。

        iPad Pro(12.9 英寸)(第 4 代)

        最终命令

        iPhone

        • iPhone 6s

        react-native run-ios --simulator="iPhone 6s"
        

        • iPhone 8

        react-native run-ios --simulator="iPhone 8"
        

        • iPhone 8 Plus

        react-native run-ios --simulator="iPhone 8 Plus"
        

        • iPhone 11

        react-native run-ios --simulator="iPhone 11"
        

        • iPhone 11 专业版

        react-native run-ios --simulator="iPhone 11 Pro"
        

        • iPhone 11 Pro Max

        react-native run-ios --simulator="iPhone 11 Pro Max"
        

        • iPhone SE(第 2 代)

        react-native run-ios --simulator="iPhone SE (2nd generation)"
        

        iPad

        • iPad Pro(9.7 英寸)

        react-native run-ios --simulator="iPad Pro (9.7-inch)"
        

        • iPad(第 7 代)

        react-native run-ios --simulator="iPad (7th generation)"
        

        • iPad Pro(11 英寸)(第 2 代)

        react-native run-ios --simulator="iPad Pro (11-inch) (2nd generation)"
        

        • 第 4 代 iPad Pro(12.9 英寸)

        react-native run-ios --simulator="iPad Pro (12.9-inch) (4th generation)"
        

        • iPad Air(第三代)

        react-native run-ios --simulator="iPad Air (3rd generation)"
        

        【讨论】:

          【解决方案10】:

          适用于 iPhone Xʀ 模拟器

              "iosxr": "react-native run-ios --simulator=\"iPhone Xʀ\"",
          

          只需将其添加到 package.json 文件中的脚本中

          这里使用的字母“ʀ”与“R”是不同的 Unicode

          然后点击$ yarn iosxr在iPhone Xʀ模拟器上启动应用程序

          【讨论】:

            【解决方案11】:

            我为它开发了 CLI 工具。你可以输入“rndcli”。然后选择设备

            https://github.com/nazrdogan/rndcli

            【讨论】:

              【解决方案12】:

              XCode 10.2 指定正确的 iOS 模拟器版本号时遇到问题,因此使用:

              react-native run-ios --simulator='iPhone X (com.apple.CoreSimulator.SimRuntime.iOS-12-1)'
              

              【讨论】:

                【解决方案13】:

                如果您想更改默认设备并且只需要运行 react-native run-ios 您可以在 finder 中搜索关键字“runios”,然后打开文件夹并修复 index.js 文件将“iphone X”更改为您需要的设备.

                [1]: https://i.stack.imgur.com/BCtR1.png

                【讨论】:

                  【解决方案14】:

                  第一种情况:
                  它发生在登录屏幕上,我在TextInput 上有autoFocus。将其注释掉,一切恢复正常。

                  第二种情况:
                  随着世博会!

                  更新 XCode 后,我总是得到 iPhone 12 Max 模拟器,但我更喜欢 iPhone 8。所以这是我采取的步骤:

                  1. 当模拟器聚焦时,转到File -&gt; Open Simulator 并选择您希望成为默认值的那个。
                  2. 关闭旧模拟器,关闭localhost:19002 并在终端中使用ctr + C 停止服务器。
                  3. 运行npm start,然后按i

                  现在它正在您打开的模拟器上运行。

                  编码愉快!

                  【讨论】:

                    【解决方案15】:

                    更改 /node_modules/react-native/local-cli/runIOS/findMatchingSimulator.js 的行代码

                    第 55 行

                      if (
                        simulator.availability !== '(available)' &&
                        simulator.isAvailable !== true
                      ) {
                        continue;
                      }
                    

                    替换哪个:

                       if (
                                    simulator.availability !== '(available)' &&
                                    simulator.isAvailable !== true
                                  ) {
                                    continue;
                         }
                    

                    【讨论】:

                      猜你喜欢
                      • 2016-10-22
                      • 1970-01-01
                      • 2021-05-25
                      • 1970-01-01
                      • 2016-11-08
                      • 1970-01-01
                      • 2012-09-23
                      • 2017-03-22
                      • 2019-05-07
                      相关资源
                      最近更新 更多