如何将expo export生成的bundle放入expo prebuild创建的XCode项目?
解决Expo预构建iOS项目JS Bundle嵌入问题
核心方案:通过Xcode构建阶段自动同步Bundle,而非手动复制
手动复制文件容易遗漏更新,用构建阶段能保证每次生成新Bundle后自动嵌入到应用包中,步骤如下:
生成iOS适配的JS Bundle及资源
执行以下命令生成针对iOS优化的Bundle文件,会自动存到dist/ios目录:expo export -p ios生成的关键文件包括:
main.jsbundle(核心JS代码)和assets(静态资源文件夹)配置Xcode构建阶段
- 打开iOS项目的工作区文件:
ios/[你的项目名称].xcworkspace - 选中主Target,切换到Build Phases标签
- 点击左上角
+按钮,选择New Copy Files Phase,命名为Copy Expo Bundle & Assets - 在Destination下拉菜单选择
Resources - 点击
+按钮,添加dist/ios/main.jsbundle和dist/ios/assets文件夹,勾选Copy items if needed,并选择Create folder references(不要选Create groups)
- 打开iOS项目的工作区文件:
验证并构建
- 切换到Build Settings标签,搜索
Bundle Resources,确认main.jsbundle和assets已在资源列表中 - 执行
Cmd+Shift+K清理项目,再重新构建运行
- 切换到Build Settings标签,搜索
注意事项
- 避免手动复制文件到iOS目录,否则每次更新Bundle都需重复操作,极易出错
- 若使用默认
expo export命令生成的dist目录,也可按上述步骤添加,但推荐用-p ios参数生成iOS专属Bundle,减少兼容性问题 - 若仍报错,检查Xcode中Copy Files Phase的执行顺序(需在Compile Sources之后),或确认Bundle文件路径无误
内容的提问来源于stack exchange,提问作者meandre
相关产品推荐
相关产品推荐

