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.mmstatic 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))"); }这时候再启动,恭喜你,应该可以启动成功了!