运行3年的裸React Native项目迁移至Expo并保留原生文件夹方法咨询
裸React Native迁移Expo并保留原生文件夹的可行方案
你完全可以保留现有的android和ios文件夹,不用从头生成新的原生代码,下面是具体操作步骤:
1. 确认基础配置
你已经成功安装了Expo Modules,接下来在项目根目录创建或完善app.json/app.config.js,确保里面的包名(ios.bundleIdentifier、android.package)和现有原生项目的包名完全一致,避免后续构建冲突。
2. 适配Firebase Messaging
不用重新配置Firebase的任何原生文件,直接保留你已有的android/app/google-services.json和ios/Runner/GoogleService-Info.plist。然后安装Expo官方的兼容包:
npx expo install expo-firebase-messaging
这个包能和你原生项目里已配置的Firebase SDK无缝协作,之前的推送证书、后台配置都能继续用。
3. 开发与构建命令(保留原生文件夹)
- 日常开发:用
npx expo start --dev-client启动项目,它会自动识别你现有的原生文件夹,不会覆盖任何配置。 - 打包构建:不要用默认的
eas build(你提到的expo perbuild应该是笔误),而是用本地构建模式,基于现有原生文件夹打包:
首先在eas.json里添加一个本地构建配置:
然后执行对应平台的构建命令:{ "build": { "local": { "developmentClient": true, "local": true } } }
这个命令会直接复用你现有的# Android本地构建 npx eas build --profile local --platform android # iOS本地构建 npx eas build --profile local --platform iosandroid/ios文件夹,所有应用商店部署的配置(签名文件、权限、推送证书等)都会保留。
4. 关键注意事项
- 绝对不要执行
npx expo prebuild(不带--no-generate参数),这个命令会生成新的原生文件夹覆盖你的现有配置。如果要检查配置是否正确,可以用npx expo prebuild --no-generate,它只会校验配置不修改文件。 - 后续安装依赖优先用
npx expo install,它会自动处理Expo Modules和原生依赖的版本兼容问题。 - 定期备份
android和ios文件夹,防止误操作导致配置丢失。
内容的提问来源于stack exchange,提问作者Mehdi
相关产品推荐
相关产品推荐

