无法创建脱机捆绑包以响应本机(iOS)

Jef*_*jan 4 android ios react-native

嗨,我正尝试使用以下代码创建一个脱机捆绑包,以响应本机iOS进行测试

react-native bundle --entry-file index.js --platform ios --dev false --bundle-output ios/main.jsbundle --assets-dest ios
Run Code Online (Sandbox Code Playgroud)

完成此操作后,我尝试使用命令运行该应用程序,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

即使终止本地开发服务器,该应用程序也可以在Android上运行。对于构建适用于iOS的脱机捆绑包的任何帮助,均表示赞赏。

编辑1:

使用命令捆绑iOS后

react-native bundle --entry-file index.js --platform ios --dev false --bundle-output ios/main.jsbundle --assets-dest ios
Run Code Online (Sandbox Code Playgroud)

我能够在iOS目录中生成main.jsbundle,然后执行以下步骤。

  1. 删除了所有文件,App Transport Security SettingsAllow Arbitrary Loads(true)Info.plist文件中添加了文件。

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

  3. 从更改了jsCodeLocation

    jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@“ index” fallbackResource:nil];

jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
Run Code Online (Sandbox Code Playgroud)
  1. 产品 -> 构建

执行上述步骤后,出现以下错误

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
Run Code Online (Sandbox Code Playgroud)

这是整个错误的屏幕截图 在此处输入图片说明

这是项目结构

在此处输入图片说明

当前版本

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

jev*_*lio 5

看来运行bundler命令的构建脚本不能正确处理文件路径中的空格字符。从您发布的屏幕快照中可以看到,项目的路径在React-Native Projects目录中包含空格字符。

如果将目录重命名为例如React-Native-Projects,则存档构建将正常运行。

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