用途
本技能用于在已经做出采用棕地迁移(brownfield migration)决策之后,将现有原生 iOS 或 Android 应用增量迁移到 React Native 或 Expo。它基于 @callstack/react-native-brownfield,提供从初始设置到分阶段宿主集成的规范化工作流。
如果用户仍在棕地、绿地、基于检查点的路径、推迟或不迁移之间做选择,应先使用 assess-react-native-migration。
主要能力
- 评估应用状态并选择 Expo 或裸 React Native 路径。
- 使用 @callstack/react-native-brownfield 完成初始设置。
- 从 React Native 源应用打包 RN 产物(iOS XCFramework / Android AAR)。
- 将一个 RN 界面集成到宿主应用并验证启动与运行时。
- 按功能或屏幕重复集成,实现增量发布。
使用方式
路径选择门(必须首先执行):
- 如果尚不存在 React Native 应用,使用 Expo 创建路径:expo-create-app.md -> expo-quick-start.md。
- 如果已存在 React Native 应用,检查 package.json 和 app.json:若存在 expo 或要求 Expo 插件工作流,则走 Expo;若使用原生文件夹和直接 RN CLI 工作流且无 Expo 路径要求,则走裸 RN。
- 若仍不明确,提出一个消歧问题。
- 继续时只使用一条路径。
迁移策略:
- 评估应用状态并选择 Expo 或裸路径。
- 使用 @callstack/react-native-brownfield 完成初始设置。
- 从 RN 源应用打包 RN 产物(XCFramework/AAR)。
- 将一个 RN 界面集成到宿主应用并验证启动/运行时。
- 按功能/屏幕重复集成,实现增量发布。
代理护栏(全局):
- 先选择一条路径(Expo 或裸),不要混用步骤。
- 使用文档中的占位符(<framework_target_name>、<android_module_name>、<registered_module_name>),并从项目文件中解析。
- 在进入宿主集成前验证每个打包命令。
- 在依赖任何标志表之前运行 npx brownfield <command> --help;帮助输出优先。
- 将稳定的项目设置一次性写入 brownfield.config.*,而不是重复标志。
- 长平台片段和 CLI 选项细节优先参考官方文档。
- 尽可能让宿主应用与直接 React Native API 隔离(外观模式)。
- 启动/运行时验证时,使用 agent-device 打开宿主应用、导航到 RN 界面、捕获快照/截图并收集设备证据。若缺失且验证需要,通过环境批准的受信路径安装,或请用户安装或启用。
适用场景
- 实现已接受的从纯原生应用到 React Native 或 Expo 的增量迁移。
- 为 Expo 或裸 React Native 项目创建棕地集成流程。
- 使用 @callstack/react-native-brownfield 执行初始设置。
- 从 React Native 应用生成 iOS XCFramework 产物。
- 从 React Native 应用生成并发布 Android AAR 产物。
- 将生成的产物集成到宿主 iOS/Android 应用。
限制
- 仅在已决定采用棕地迁移后使用;迁移路径决策应先用 assess-react-native-migration。
- 每个任务只使用一条路径(Expo 或裸),除非用户明确要求迁移或比较。
- 共享宿主与 RN 状态、类型化 RN 到原生导航需使用 brownie / brownfield-navigation 技能,它们来自另一个仓库,按名称调用;若未安装则回退到官方文档。
- 具体 CLI 标志、配置文件和产物路径以官方文档和 --help 输出为准。