Could not find iphone6 simulator

3,454 阅读1分钟

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 具体路径如下:

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

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

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

    将startsWidth改成includes,即如下

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

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

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

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

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

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

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

    找到这个地方改成

    if (simulator.isAvailable !== true)
    

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

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

    改成

    static BOOL RCTParseUnused(const char **input)
    {
      return RCTReadString(input, "__unused") ||
            RCTReadString(input, "__attribute__((__unused__))") ||
             RCTReadString(input, "__attribute__((unused))");
    }
    

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