问题描述
我正在尝试创建一个离线包,用于使用以下代码进行测试的本机 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/assets
react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-目标 android/app/src/main/res
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
我可以在 iOS 目录中生成 main.jsbundle,然后按照以下步骤操作.
删除了所有
应用传输安全设置
并在Info.plist文件中添加了Allow Arbitrary Loads(true)
.>将运行编辑方案编辑为发布
将 jsCodeLocation 从
更改为jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
到
jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
- 产品 -> 构建
执行上述步骤后,出现以下错误
文件/Users/jeffreyrajan/Library/Developer/Xcode/DerivedData/app_prod-fnewtufemaynsoedmhggmfjynoti/Build/Products/Release-iphonesimulator/app_prod.app/main.jsbundle 不存在.这一定是一个错误+ echo '反应原生
这是整个错误的截图
这里是项目结构
当前版本:
- 反应:16.0.0
- 反应原生:0.51.0
- Xcode:9.2
运行 bundler 命令的构建脚本似乎没有正确处理文件路径中的空白字符.我可以从您发布的屏幕截图中看到,您的项目路径在 React-Native Projects
目录中包含一个空格字符.
如果您将目录重命名为例如React-Native-Projects
,存档构建将正常工作.
一般来说,将目录和文件名限制为字母数字字符是一个很好的开发人员做法,因为许多 Unix 工具需要转义其他字符类型.
Hi I was trying to create a offline bundle for react native iOS for testing using the following code
react-native bundle --entry-file index.js --platform ios --dev false --bundle-output ios/main.jsbundle --assets-dest ios
After doing this I tried to run the app using the command react-native run-ios --configuration=release
once it is done the app opens and crashes instantly. So I used react-native run-ios
this time the app opens with the local development server, if I terminate the development server then I will be getting Unhandled JS Exception error. For Android I tried the following steps to make it work.
mkdir android/app/src/main/assets
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
react-native run-android
Even if I terminate the local development server the app will work in Android. Any help for building offline bundle for iOS is appreciated.
Edit 1:
After bundling for iOS using the command
react-native bundle --entry-file index.js --platform ios --dev false --bundle-output ios/main.jsbundle --assets-dest ios
I'm able to generate main.jsbundle inside iOS directory and then followed the following steps.
Removed all the
App Transport Security Settings
and addedAllow Arbitrary Loads(true)
inside Info.plist file.Edited the Run Edit Scheme to Release
Changed the jsCodeLocation from
jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
to
jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
- Product -> Build
After following the above steps I'm getting the following error
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
Here is the screenshot of the whole error
Here is the project structure
Current Version:
- React : 16.0.0
- React Native : 0.51.0
- Xcode:9.2
It appears that the build script that runs the bundler command does not handle whitespace characters in file paths correctly. I can see from the screenshot you posted that the path to your project contains a space character in the React-Native Projects
directory.
If you rename the directory to e.g. React-Native-Projects
, the Archive build will work correctly.
In general, it's a good developer practice to limit directory and file names to alphanumeric characters, because many Unix tools require escaping other character types.
这篇关于无法为 React Native (iOS) 创建离线包的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!