Expo 棕地集成助手
帮助团队将 Expo 和 React Native 增量集成到现有的原生 iOS 或 Android 应用中。
内容总体遵循项目范围,说明了本地构建、远程发布及环境变量凭据的流向,也区分了消费端与构建端依赖;但发布到远程仓库和修改原生构建会产生外部影响,缺少明确的用户确认、权限最小化、回滚和安全审查步骤,故扣分。
集成与隔离路径、平台配置、常见故障和开发/生产差异均有较完整说明;但文件存在 SDK 54 与 SDK 55 最低版本表述不一致,且没有提交的测试套件或可静态验证的关键路径执行证据,按静态校准不超过 10,故扣分。
目标用户、隔离/集成选择条件、Android/iOS/monorepo 场景和不适用情形较清楚,并提供故障分流;但触发边界、输入输出契约、非标准构建系统兼容范围及中文环境说明不足,也未明确大陆网络可达性,故扣分。
目录结构、渐进式参考文档、安装命令、示例、版本提示、故障排查、MIT 许可证和仓库维护工作流均有覆盖;但缺少该技能自身的版本号、变更日志、明确维护负责人和更新路径,且部分假设分散在正文中,故扣分。
文档提供了可直接复制的 Gradle、Podfile、Kotlin、Swift 和发布示例,能够覆盖核心 brownfield 集成任务;但没有实际构建结果或代表性输出验证,且 SDK/API 版本矛盾可能导致返工,静态校准最高只能给 7,故扣分。
引用了 Expo 文档和 GitHub 模板,并包含仓库 CI 检查工作流,关键配置具有一定可审计性;但没有针对该技能路径的测试、构建产物、日志或第三方交叉验证,静态评估最高只能给 5,故扣分。
- 集成文档同时出现 Expo SDK 54 和 SDK 55 作为最低版本的说法;在采用前应以目标 SDK 的官方模板和 API 实际可用性为准。
- 故障排查包含 rm -rf ~/.m2/...、ios/build、ios/Pods 等清理命令;执行前应确认路径、备份必要状态并准备可恢复方案。
- 远程私有 Maven 发布涉及用户名、密码或令牌;应仅通过受控环境变量和最小权限凭据操作,先确认发布目标与权限。
- 未提供该技能关键路径的已执行构建或测试证据。
这个 Skill 能做什么,适合哪些场景?
该技能面向已经存在原生 iOS 或 Android 应用、希望逐步引入 React Native 的团队。它比较并指导两种方案:以 AAR 或 XCFramework 形式交付的隔离式集成,以及直接加入 Gradle 或 CocoaPods 构建流程的集成式方案。内容涵盖方案选择、共享前置条件、版本要求和常见故障排查。Expo SDK 55 是棕地集成的最低支持版本。
根据团队是否需要 Node.js、React Native 工具链、热更新、源代码映射以及独立代码仓库等条件,帮助选择隔离式或集成式方案;说明如何构建和消费 AAR/XCFramework,或将 React Native 与 Expo 加入 Gradle、CocoaPods、ReactActivity、RCTRootView 等原生构建与入口;提供 Metro 连接、构建、签名和模块解析问题的排查方向。
- 原生 Android 团队希望将 React Native 作为 AAR 依赖接入现有 Kotlin 应用,且不安装 Node.js。
- 原生 iOS 团队希望将预构建 XCFramework 接入现有 Swift 应用,并让 RN 代码独立仓库维护。
- 同一个团队同时维护原生代码和 RN 代码,希望把 Expo 直接加入 Gradle 与 CocoaPods 构建流程。
- 已有原生应用需要逐步引入 React Native,并需要在隔离式和集成式架构之间做选择。
- 团队升级棕地项目时,需要确认 Expo SDK 版本、自动链接入口和构建环境要求。
这个 Skill 有哪些优点和局限?
- 同时覆盖隔离式和集成式两种棕地架构。
- 给出基于团队所有权、工具链和发布节奏的方案选择规则。
- 覆盖 iOS 与 Android,并包含构建、签名、Metro 和模块解析等常见问题。
- 明确指出 Expo SDK 55 是最低支持版本。
- 技能主要提供决策和实施指导;源材料未显示它会自动执行构建或修改项目。
- 两种方案的 React Native 构建环境都需要 Node.js LTS 和 Yarn。
- 集成式 iOS 方案还需要 CocoaPods;隔离式方案的消费端虽不需要 RN 工具链,但构建 RN 侧仍有前置条件。
- 源材料未提供测试套件或自动化验证结果。
如何安装这个 Skill?
该技能属于 expo/skills 集合。使用 Skills CLI 安装集合:npx skills@latest add expo/skills --skill '*';也可按 README 所述,在 Codex 中运行 codex plugin add expo@openai-curated,或在 Claude Code 中运行 claude plugin install expo@claude-plugins-official。源材料未提供仅安装 expo-brownfield 的 CLI 命令。
如何使用这个 Skill?
在已安装该技能的代理中提出具体请求,例如:“我有一个现有的 Kotlin Android 应用,想以 AAR 方式嵌入 Expo/React Native,应该选择哪种棕地方案?”或“如何把 Expo 和 React Native 集成到现有的 Swift/CocoaPods 项目中?”创建项目时明确固定 SDK 版本,例如 npx create-expo-app@latest my-project --template default@sdk-55,并在 RN 项目及嵌入依赖中保持相同的 Expo SDK。
这个 Skill 与同类方案有什么区别?
它明确比较隔离式集成与集成式集成:前者交付 AAR/XCFramework,适合原生团队不安装 Node.js 或 RN 工具链、代码分仓或独立发布;后者把 React Native 源码加入 Gradle/CocoaPods,适合一个团队统一维护并需要热更新和源代码映射的场景。