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。