更新Xcode11后启动react-native报错:Unknown argument type ‘_attribute_’ in method -[RCTAppState getCurren

前言

在更新Xcode11之后,会发现启动以前的react-native项目,会报错。但是之前的代码都已经上线了,应该不会出现逻辑问题的。经过排查问题主要是两个。

问题1:如果使用非Xcode启动RN项目报错

描述

一般情况下,比如我在Webstorm中启动react-native项目时,主要就是两步。

> npm start

> react-native run-ios
info Found Xcode project XXX.xcodeproj
CoreData: annotation:  Failed to load optimized model at path '/Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/Frameworks/InstrumentsPackaging.framework/Versions/A/Resources/XRPackageModel.momd/XRPackageModel 9.0.omo'
error Could not find iPhone X simulator. Run CLI with --verbose flag for more details.

以前都启动的好好的,怎么现在就报错了呢?

解决

应该是在Xcode11更新后,模拟器默认只安装了 iphone 8 / iphone 8 Plus / iphone 11 / iphone 11 Pro / iphone 11 Pro Max 这几款手机。

而react-native中,配置文件的地址
/node_modules/@react-native-community/cli-platform-ios/build/commands/runIOS/runIOS.js 的 359 行,可以看到配置的如下:

options: [{
    command: '--simulator [string]',
    description: 'Explicitly set simulator to use. Optionally include iOS version between' + 'parenthesis at the end to match an exact version: "iPhone 6 (10.0)"',
    default: 'iPhone X'
  }

默认的启动项的 iphone x 不存在了。所以启动时需要我们手动的指定Xcode11中存在的模拟器类型即可。

react-native run-ios --simulator="iPhone 8" # 非全面屏
react-native run-ios --simulator="iPhone 11 Pro" # 全面屏

问题2:启动RN项目后进入RN页面报错

描述

在Xcode10版本创建的RN项目,整个程序都是好好地。但是在更新到Xcode11之后运行时,模拟器能起来,但是在进入RN页面时,却提示报错:Unknown argument type ‘_attribute_’ in method -[RCTAppState getCurrentAppState:error:]. Extend RCTConvert to support this type
在这里插入图片描述

这个问题就是由于Xcode11更新所引起的问题。

解决

打开/node_modules/react-native/React/Base/RCTModuleMethod.mm 文件。

然后修改其中的 RCTParseUnused 方法,为其增加一个新的判断条件 RCTReadString(input, "__attribute__((__unused__))") ||

// 修改后的结果如下
static BOOL RCTParseUnused(const char **input)
{
  return RCTReadString(input, "__unused") ||
         RCTReadString(input, "__attribute__((__unused__))") ||
         RCTReadString(input, "__attribute__((unused))");
}

然后重新启动项目,就可以发现我们能够正常的进入到react-native的项目页面中了。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值