ReactNative

react native xcode升级过程中遇到的坑

2018-09-20  本文已影响508人  niklause_sun

React Native在release的过程中,总是会遇到一些奇怪的问题

xcode 9.3进行release的过程中,经常会出现这个问题

Build fails.

/Users/*****/node_modules/react-native/Libraries/Text/RCTTextField.m:131:108: Values of type 'NSInteger' should not be used as format arguments; add an explicit cast to 'long' instead

RCTLogWarn(@"Native TextInput(%@) is %zd events ahead of JS - try to make your JS faster.", self.text, eventLag);

Enum values with underlying type 'NSInteger' should not be used as format arguments; add an explicit cast to 'long' instead

同时在RCTImage和RCTImageCache中都会出现相同的问题。

解决这个问题有两种途径,一个是把xcode降级到9.2,另一种则是把%zd改成lld并在eventLag的前面加上 (long long )。

最近手贱将xcode升级到10,然后在一开始builddebug版本时并没有太多问题,但是在release的时候碰到了一下问题

▸ Compiling vlog_is_on.cc

❌  /Users/guillaumehain/Developments/companion/node_modules/react-native/third-party/glog-0.3.4/src/base/mutex.h:105:10: 'config.h' file not found

#include "config.h"           // to figure out pthreads support
       ^

为了解决这个问题,在查阅了github后进行了如下操作

$ cd node_modules/react-native/third-party/glog-0.3.4/ && ./configure

然后又出现了下面这个问题

[10:41:27]: ▸ Compiling signalhandler.cc
[10:41:27]: ▸ ❌  /Users/guillaumehain/Developments/companion/node_modules/react-native/third-party/glog-0.3.4/src/signalhandler.cc:78:28: no member named '__rip' in '__darwin_arm_thread_state'
[10:41:27]: ▸ return (void*)context->PC_FROM_UCONTEXT;
[10:41:27]: ▸ 

大晚上的差点气的摔了电脑,想想算了,毕竟自己手贱升级的,

又查阅了github之后,发现可以把(void*)context->PC_FROM_UCONTEXT 改成 NULL

即改成下面这个样子

return (void*)context->PC_FROM_UCONTEXT;
== >
return NULL;

这样就可以进行release版本了,暂时为什么会出现这些问题,以及这样做有什么问题并不清楚,等之后有时间了再深究一下。

慎重升级啊!!!!

2018-12-26日更新

之前的时候发现了一种新的方法,可以很好的解决这个问题

在xcode 点击 file- workspace Settings


屏幕快照 2018-12-26 上午11.17.43.png

然后把里面的Build System 改为 Legacy Build System
如下图所示


更改前 更改后

可以build之前运行 rm -rf node_modules && yarn cache clean && yarn再进行build。

上一篇下一篇

猜你喜欢

热点阅读