Expo 迁移检查清单
✅ 迁移前准备
- 备份原项目 (
App_backup) - 安装 Expo CLI (
npm install -g @expo/cli) - 确保 Node.js 版本 >= 16
- 阅读完整迁移计划文档
📦 项目结构迁移
- 创建新的 Expo Bare 项目
- 复制
app/目录到新项目 - 复制
deps/目录 - 复制配置文件 (
tsconfig.json,.eslintrc.js等) - 复制
patches/目录 - 设置正确的路径别名 (
@app,@deps)
🔧 配置文件更新
- 更新
app.json- 添加 Expo 特定配置 - 配置
eas.json- 构建配置 - 更新
metro.config.js- 使用 Expo Metro 配置 - 更新
babel.config.js- 使用babel-preset-expo - 创建 RFID 模块插件 (
plugins/rfid-module-plugin.js)
📚 依赖迁移
SQLite
- 替换
react-native-quick-sqlite→expo-sqlite - 更新
app/logger/logsDB.ts - 更新
app/db/sqlite.ts - 测试数据库操作
文件系统
- 替换
react-native-fs→expo-file-system - 更新
app/utils/base64FromFile.ts - 更新
app/data/images/processAssets.ts - 测试文件读写操作
相机和图片
- 替换
react-native-image-picker→expo-image-picker - 替换
react-native-vision-camera→expo-camera - 更新
app/data/images/useImageSelector.ts - 测试相机功能
设备信息
- 替换
react-native-device-info→expo-device+expo-application - 更新相关使用代码
- 测试设备信息获取
文档选择
- 替换
react-native-document-picker→expo-document-picker - 更新相关使用代码
分享功能
- 替换
react-native-share→expo-sharing - 更新分享相关代码
🔌 原生模块处理
RFID 模块 (关键)
- 运行
npx expo prebuild生成原生目录 - 复制 Android Java 文件到
android/app/src/main/java/-
RFIDWithUHFUARTModule.java -
RFIDWithUHFBLEModule.java -
AppPackage.java
-
- 复制 iOS Objective-C 文件到
ios/- RFID 相关的
.m和.h文件
- RFID 相关的
- 更新
android/app/src/main/java/.../MainApplication.java - 更新
ios/Inventory/AppDelegate.mm - 测试 RFID 功能
其他原生模块
- 检查是否有其他自定义原生代码
- 确保所有原生依赖正确链接
🎨 UI 和导航
- 测试 React Navigation 导航
- 测试 React Native Paper 组件
- 测试 React Native Reanimated 动画
- 测试手势处理
- 检查图标和字体显示
🗄️ 数据和状态管理
- 测试 Redux 状态管理
- 测试 PouchDB 数据同步
- 测试 AsyncStorage 数据持久化
- 验证数据迁移完整性
🔐 权限配置
iOS (Info.plist)
- 相机使用权限
- 相册访问权限
- 蓝牙使用权限
- 位置权限 (如果需要)
Android (AndroidManifest.xml)
- 相机权限
- 存储权限
- 蓝牙权限
- 位置权限 (如果需要)
🏗️ 构建和部署
- 本地 iOS 构建测试 (
npx expo run:ios) - 本地 Android 构建测试 (
npx expo run:android) - EAS 云构建测试 (
eas build --platform ios) - EAS 云构建测试 (
eas build --platform android) - 配置 App Store Connect / Google Play Console
🧪 功能测试
核心功能
- 应用启动和导航
- 用户认证和配置
- 数据创建、读取、更新、删除
- 数据同步功能
RFID 功能
- RFID 标签读取
- RFID 标签写入
- 蓝牙连接
- 批量操作
媒体功能
- 拍照和选择图片
- 图片上传和处理
- 文档选择和分享
系统功能
- 推送通知 (如果有)
- 后台任务 (如果有)
- 深度链接 (如果有)
🐛 问题排查
常见问题
- Metro bundler 错误
- 原生模块链接问题
- 权限配置问题
- 构建错误
性能检查
- 应用启动时间
- 内存使用情况
- 电池消耗
- 网络请求性能
📝 文档更新
- 更新 README.md
- 更新开发环境设置说明
- 更新部署流程文档
- 创建故障排除指南
✨ 最终验收
- 所有原有功能正常工作
- 性能满足要求
- 构建流程稳定
- 部署流程正常
- 团队培训完成
📞 需要帮助时
如果在迁移过程中遇到问题,可以:
- 查看 Expo 官方文档
- 搜索相关 GitHub Issues
- 在 Expo Discord 社区寻求帮助
- 考虑咨询 Expo 专业服务
⚠️ 重要提醒
- 迁移过程中保持频繁的代码提交
- 在每个主要步骤后进行测试
- 保留原项目作为参考
- 记录遇到的问题和解决方案