在React Native with Expo中无需修改iOS项目,配置添加文件夹至iOS构建
在Expo React Native中添加文件夹到iOS构建流程(无需修改Xcode项目)
完全可以实现,不用直接改动iOS原生项目,通过Expo的配置插件就能达成类似Xcode文件夹引用的效果,文件夹内新增的文件会自动纳入下一次构建。
核心方案:使用Expo Config Plugin
Expo的配置插件允许你在构建过程中自动修改原生项目配置,无需手动操作Xcode。以下是具体实现步骤:
1. 创建自定义配置插件
在项目根目录新建一个插件文件,比如withAssetFolder.js,代码如下:
const { withXcodeProject } = require('@expo/config-plugins'); module.exports = function withAssetFolder(config) { return withXcodeProject(config, async (config) => { const project = config.modResults; const fs = require('fs'); const path = require('path'); // 替换为你要添加的目标文件夹路径(相对于项目根目录) const assetFolderPath = path.resolve(__dirname, './assets/custom-resources'); // 检查文件夹是否存在 if (!fs.existsSync(assetFolderPath)) { console.warn('目标资源文件夹不存在,请检查路径是否正确'); return config; } // 添加文件夹引用到Xcode项目 const group = project.addPbxGroup([], 'CustomResources', '""'); project.addResourceFile(assetFolderPath, { group: group.uuid, sourceTree: '<group>', // 开启文件夹引用模式(对应Xcode的"Create folder references"选项) createFolderReference: true, }); return config; }); };
2. 在项目配置文件中注册插件
打开app.json或app.config.js,在expo字段的plugins数组中添加自定义插件:
{ "expo": { "name": "YourProject", "slug": "your-project-slug", "plugins": [ "./withAssetFolder.js" ] } }
3. 验证构建效果
运行iOS构建命令:
eas build --platform ios
构建完成后,目标文件夹会以引用形式加入iOS项目,后续在该文件夹中新增的文件,下次执行构建时会自动被包含,效果和在Xcode中手动添加文件夹引用完全一致。
注意事项
- 务必确认插件中的文件夹路径正确,路径需相对于项目根目录
- Expo Go开发客户端不支持自定义原生配置,因此该修改无法在Expo Go预览中生效,需使用
eas build或expo prebuild生成原生项目后测试 - 对于二进制文件(如音频、自定义框架等),需确保文件夹结构符合iOS资源规范,避免构建报错
内容的提问来源于stack exchange,提问作者jpcoder
相关产品推荐
相关产品推荐

