【发布时间】:2018-01-11 14:50:54
【问题描述】:
您好,我正在尝试使用以下代码为反应原生 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,应用程序通过本地开发服务器打开,如果我终止开发服务器,我将收到 Unhandled JS Exception 错误。对于 Android,我尝试了以下步骤以使其正常工作。
mkdir android/app/src/main/assetsreact-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/resreact-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
我能够在 iOS 目录中生成 main.jsbundle,然后按照以下步骤操作。
删除所有
App Transport Security Settings并在Info.plist 文件中添加Allow Arbitrary Loads(true)。将运行编辑方案编辑为发布
-
从
更改了 jsCodeLocationjsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
到
jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
- 产品 -> 构建
执行上述步骤后,我收到以下错误
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
这是项目结构
当前版本:
- 反应:16.0.0
- 反应原生:0.51.0
- Xcode:9.2
【问题讨论】:
-
可以看到由于
Cannot find module /users/jeffreyrajan/Projects/React-Native,javascript构建失败。鉴于您的 JS 构建工作在开发模式下,这可能是 Babel 或 Metro 捆绑器无法正确解析模块路径的问题。你在使用任何自定义 Babel 插件或 Metro 转换器吗? -
No @jevakallio 我没有使用任何自定义 Babel 插件或 Metro 转换器,这是一个只有默认代码的示例项目
标签: android ios react-native