react-native开发

react-native解决Unknown argument t

2020-12-15  本文已影响0人  朱传武

今天接了个乌拉圭小伙的解决问题邀请,描述如下:


image.png

程序在android模拟器下可以正常运行,而在ios下面不行,之后他把源码发给了我,我试了下,其实和xcode升级不升级没啥关系,报如下错:

2020-12-15 20:23:51.062 [error][tid:main][RCTModuleMethod.mm:375] Unknown argument type '__attribute__' in method -[RCTLinkingManager getInitialURL:reject:]. Extend RCTConvert to support this type.
2020-12-15 20:23:51.063607+0800 SimplyHours[20472:480877] Unknown argument type '__attribute__' in method -[RCTLinkingManager getInitialURL:reject:]. Extend RCTConvert to support this type.
2020-12-15 20:23:51.101 [fatal][tid:main] Exception '*** -[__NSArrayM objectAtIndexedSubscript:]: index 1 beyond bounds [0 .. 0]' was thrown while invoking getInitialURL on target LinkingManager with params (
    168,
    169
)

稍懂点ios的同学一眼就能看出来出问题的类发生在RCTModuleMethod.mm这个文件,仔细看错误提示:Unknown argument type '__attribute__' in method是找不到这个__attribute__类型,
attribute((unused)) GCC属性,仅告诉编译器“如果我不使用此变量,请勿警告我”,查看文件:

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))");
}

重新运行即可。然而,这个文件是在node_modules下面,每次yarn或者npm install 之后,又会恢复到之前错误的文件,这样是不是就太烦人了,每次yarn之后要重新修改一遍?修改如下:

image.png
将修改好的文件放到工程目录下面,然后在package.json添加
cp -f RCTModuleMethod.mm node_modules/react-native/React/Base/RCTModuleMethod.mm

强制替换错误文件!

image.png
这里一定要注意是一个“&”符号,两个的话就是等待前一个命令完成之后才执行下一个,一个的话就是同时执行!
这样似乎还有漏洞,如果用户习惯用xcode运行,就不会走yarn startreact-native run-ios 命令,这时我们可以在xcode里面也配置一下shell命令:
image.png
注:前后修改不过10分钟,用户的金额是100美金,还是非常happy的。这样的雇主来一打就好了每天!!!
也是我在upwork上面接到的第二个活,特此,技术也记录一下,接单历程也记录一下。 image.png
上一篇 下一篇

猜你喜欢

热点阅读