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
之后要重新修改一遍?修改如下:
将修改好的文件放到工程目录下面,然后在package.json添加
cp -f RCTModuleMethod.mm node_modules/react-native/React/Base/RCTModuleMethod.mm
强制替换错误文件!
这里一定要注意是一个“&”符号,两个的话就是等待前一个命令完成之后才执行下一个,一个的话就是同时执行!
这样似乎还有漏洞,如果用户习惯用xcode运行,就不会走
yarn start
、react-native run-ios
命令,这时我们可以在xcode里面也配置一下shell
命令:image.png
注:前后修改不过10分钟,用户的金额是100美金,还是非常happy的。这样的雇主来一打就好了每天!!!
也是我在
upwork
上面接到的第二个活,特此,技术也记录一下,接单历程也记录一下。
image.png