Could not find iphone6 simulator

Could not find iphone6 simulator

当我们使用的react-native低版本的时候,而我的mac系统环境升级了,我们再运行react-native run-ios,这时候就会报上面的异常。

那我们如何来处理这个异常呢?
  • 既然是react-native版本太低了,简单直接的方法就是升级react-native,当然如果是维护已开发的项目,升级react-native版本后,会有一系列的版本代码需要升级。

  • 第二种方法呢,就是处理一下react-native这个包里面的代码,如下:

    在node_modules中找到react-native,打开后找到 findMatchingSimulator.js
    具体路径如下:

    1
    ./node_modules/react-native/local-cli/runIOS/findMatchingSimulator.js

    首先我们找到如下代码块:

    1
    if (!version.startsWith('iOS') && !version.startsWith('tvOS'))

    将startsWidth改成includes,即如下

    1
    if (!version.includes('iOS') && !version.includes('tvOS'))

    也在别的地方看到改成别的

    1
    if (!version.startsWith('com.apple.CoreSimulator.SimRuntime.iOS') && !version.startsWith('com.apple.CoreSimulator.SimRuntime.tvOS'))

    这里可以自己写一个console.log(version, devices)看看具体的输出。

    以上处理完后执行 react-native run-ios 看看是否还报该异常。

    如果还有异常,在修改该文件中的这个部分

    1
    if (simulator.availability !== '(available)')

    找到这个地方改成

    1
    if (simulator.isAvailable !== true)

    同样的我们再次启动,如何还有该异常,我们还需要改原生的一块代码,找到如下路径文件

    1
    ./node_modules/react-native/React/Base/RCTModuleMethod.mm
    1
    2
    3
    4
    5
    static BOOL RCTParseUnused(const char **input)
    {
    return RCTReadString(input, "__unused") ||
    RCTReadString(input, "__attribute__((unused))");
    }

    改成

    1
    2
    3
    4
    5
    6
    static BOOL RCTParseUnused(const char **input)
    {
    return RCTReadString(input, "__unused") ||
    RCTReadString(input, "__attribute__((__unused__))") ||
    RCTReadString(input, "__attribute__((unused))");
    }

    这时候再启动,恭喜你,应该可以启动成功了!