缓存问题在iOS应用程序中嵌入多个捆绑的react-native应用程序

时间:2015-12-14 15:13:15

标签: ios xcode bash react-native

我正在尝试在一个Objective-C应用程序中运行多个ReactNative应用程序。我写了一个小的bundle脚本,与react-native-xcode.sh非常相似。唯一的区别是我的基于用户提供的输入和输出文件:

#!/bin/bash

case "$CONFIGURATION" in
  Debug)
    DEV=true
    ;;
  Release)
    DEV=false
    ;;
  "")
    echo "$0 must be invoked by Xcode"
    exit 1
    ;;
  *)
    echo "Unsupported value of \$CONFIGURATION=$CONFIGURATION"
    exit 1
    ;;
esac

# For the number of input files, get the input file name and corresponding output file name, and
# create a static bundle.
for (( i=0; i<$SCRIPT_INPUT_FILE_COUNT; i++ ))
do
  eval INPUT_FILE_NAME=\${SCRIPT_INPUT_FILE_$i}
  eval OUTPUT_FILE_NAME=\${SCRIPT_OUTPUT_FILE_$i}

  echo $INPUT_FILE_NAME
  echo $OUTPUT_FILE_NAME

  $(which react-native) bundle \
    --entry-file $INPUT_FILE_NAME \
    --dev $DEV \
    --platform ios \
    --bundle-output $OUTPUT_FILE_NAME

done

我在package.json中指定了ReactNative应用程序,并使用npm install进行安装。我在Run Script构建阶段指定输入和输出文件的路径: Input and Output files of the "Run Script" phase

无论出于何种原因,我的软件包在npm install之后永远不会更新。

代码: Code at bundle time

软件包: Output after bundle

FWIW,软件包在安装之前,确实有一个文本组件“Choose Subscriptions”。

似乎react-native bundle命令正在使用缓存文件,或者Xcode每次都将.jsbundle的旧版本复制到应用程序包。有谁知道如何解决问题并让Xcode将正确的.jsbundle复制到应用程序包?

1 个答案:

答案 0 :(得分:0)

现在已知问题。使用以下任一方法:

  • 每次构建之前:rm -rf $TMPDIR/react-*
  • 将此选项添加到您的构建脚本:--resetCache true