问题
自从 React-Native (以下简称 RN) 升级到 0.14 版本之后,我就发现每次从 xcode 启动程序变慢了,慢了大约有10秒左右。这件事情一次两次还能忍,但是每次如此实在是浪费生命。这是什么原因呢?经过一番尝试,我发现问题出在这里:
这个 react-native-xcode.sh
花费了大约10秒的时间。那么这个脚本干了什么呢?打开这个文件可以看到,它的主要工作就是生成 js bundle:
...
react-native bundle \
--entry-file index.ios.js \
--platform ios \
--dev $DEV \
--bundle-output "$DEST/main.jsbundle" \
--assets-dest "$DEST"
在 RN 0.14 之后,你已经不需要手工执行 react-native bundle
来生成 main.jsbundle
,取而代之的就是 ** “每次执行都生成!” **。这就是慢的原因。
解决
知道原因之后是否可以解决这个问题呢?很简单,你只要在 react-native-xcode.sh
头上加几行:
if [ "$CONFIGURATION" = "Debug" ]; then
echo "--- Skip bundle building in 'Debug' mode"
exit 0
fi
这样就可以恢复到原来的“高速”执行的方式了。
Issue
我后来发现,这个问题有一个对应的 issue。原本是 Asset System 的作者“当时”(4个月前)提出新的 Asset System 的实现构想。结果当新 Asset System 发布后,又带来了这个新问题。而这个问题目前显然不在 FB 的考虑范围内,所以自己改吧。