无法为本机创建脱机捆绑包(iOS)

时间:2018-01-11 14:50:55

标签: android ios react-native

您好我正在尝试使用以下代码创建一个用于反应原生iOS的脱机捆绑包

react-native bundle --entry-file index.js --platform ios --dev false --bundle-output ios/main.jsbundle --assets-dest ios

执行此操作后,我尝试使用命令react-native run-ios --configuration=release运行应用程序一旦应用程序打开并立即崩溃。所以这次使用react-native run-ios应用程序打开本地开发服务器,如果我终止开发服务器,那么我将得到未处理的JS异常错误。对于Android,我尝试了以下步骤使其工作。

  1. mkdir android/app/src/main/assets
  2. react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
  3. react-native run-android
  4. 即使我终止本地开发服务器,该应用程序也可以在Android中运行。任何有关为iOS构建离线捆绑包的帮助都表示赞赏。

    修改1:

    使用命令

    捆绑iOS后
    react-native bundle --entry-file index.js --platform ios --dev false --bundle-output ios/main.jsbundle --assets-dest ios
    

    我可以在iOS目录中生成 main.jsbundle ,然后按照以下步骤操作。

    1. 删除了所有App Transport Security Settings并在 Info.plist 文件中添加了Allow Arbitrary Loads(true)

    2. 编辑运行编辑方案发布

    3. 更改了 jsCodeLocation

      jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@" index" fallbackResource:无];

    4. jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
      
      1. 产品 - > 构建
      2. 按照上述步骤操作后,我收到以下错误

        File /Users/jeffreyrajan/Library/Developer/Xcode/DerivedData/app_prod-fnewtufemaynsoedmhggmfjynoti/Build/Products/Release-iphonesimulator/app_prod.app/main.jsbundle does not exist. This must be a bug with
        + echo 'React Native
        

        以下是整个错误的屏幕截图 enter image description here

        这是项目结构

        enter image description here

        当前版本

        • 反应:16.0.0
        • React Native:0.51.0
        • Xcode的:9.2

1 个答案:

答案 0 :(得分:4)

运行bundler命令的构建脚本似乎无法正确处理文件路径中的空白字符。我可以从您发布的屏幕截图中看到,项目的路径在React-Native Projects目录中包含空格字符。

如果您将目录重命名为例如React-Native-Projects,存档构建将正常工作。

通常,将目录和文件名限制为字母数字字符是一个很好的开发人员惯例,因为许多Unix工具需要转义其他字符类型。