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-sqliteexpo-sqlite
  • 更新 app/logger/logsDB.ts
  • 更新 app/db/sqlite.ts
  • 测试数据库操作

文件系统

  • 替换 react-native-fsexpo-file-system
  • 更新 app/utils/base64FromFile.ts
  • 更新 app/data/images/processAssets.ts
  • 测试文件读写操作

相机和图片

  • 替换 react-native-image-pickerexpo-image-picker
  • 替换 react-native-vision-cameraexpo-camera
  • 更新 app/data/images/useImageSelector.ts
  • 测试相机功能

设备信息

  • 替换 react-native-device-infoexpo-device + expo-application
  • 更新相关使用代码
  • 测试设备信息获取

文档选择

  • 替换 react-native-document-pickerexpo-document-picker
  • 更新相关使用代码

分享功能

  • 替换 react-native-shareexpo-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 文件
  • 更新 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
  • 更新开发环境设置说明
  • 更新部署流程文档
  • 创建故障排除指南

✨ 最终验收

  • 所有原有功能正常工作
  • 性能满足要求
  • 构建流程稳定
  • 部署流程正常
  • 团队培训完成

📞 需要帮助时

如果在迁移过程中遇到问题,可以:

  1. 查看 Expo 官方文档
  2. 搜索相关 GitHub Issues
  3. 在 Expo Discord 社区寻求帮助
  4. 考虑咨询 Expo 专业服务

⚠️ 重要提醒

  • 迁移过程中保持频繁的代码提交
  • 在每个主要步骤后进行测试
  • 保留原项目作为参考
  • 记录遇到的问题和解决方案