工具TypeScript
sdkbump
检查 native iOS、Flutter 和 React Native 应用是否受 iOS 27 SDK 变更影响,并为每项问题给出对应的修复方法。
0星标数最新版本: v0.1.3更新时间: 2026年10月15日
支持平台:Node.js 22.12+macOSLinux
许可证: MIT
用 iOS 27 SDK 构建的应用如果没有声明 scene,会在无警告的情况下编译通过,然后在启动时停止运行。sdkbump 读取 native iOS、Flutter 或 React Native/Expo 项目的文件(project.pbxproj、Info.plist、Swift 和 Objective-C 源码、package.json、pubspec.yaml),以 SCN001 到 SCN004 规则报告 UIScene 生命周期问题,并挑选出适合该项目生态和版本的修复方法。它不会构建、运行或修改项目。
功能特性
- 一个回答“能不能启动?”的结论:无法启动、启动后黑屏、通过一个 workaround 包启动、或无法判断启动结果
- 在同一份报告中用相同的规则 ID 覆盖 native iOS、Flutter(应用和插件示例)、React Native 和 Expo
- 按生态和版本挑选修复方法:React Native 0.88 或手写的 scene delegate,Expo SDK 57 的 opt-in 或 SDK 58,Flutter 的自动迁移或手动步骤
- 规则以数据形式保存在 rules/ios27.json 中,用 zod 校验;每条规则、修复方法和 workaround 都带有来源,没有来源会导致测试失败
- 终端、Markdown 和 JSON 报告,带有 --fail-on 以及供 CI 使用的 0、1、2 退出码
- 能识别 react-native-uiscene-bridge 和 react-native-xcode27,并把它们在运行时处理的问题连同各自的限制标记为“handled”
- 只读取文件,因此不需要 Xcode,也能在 Linux 上运行;被检查项目中的文本在每种格式下都以纯文本输出
快速开始
sh
1npx @mcamdali/sdkbump --format markdown --output sdkbump.md安装
npm (global)
sh
1npm i -g @mcamdali/sdkbump2sdkbumpnpx
sh
1npx @mcamdali/sdkbumpHomebrew
sh
1brew install muhittincamdali/tap/sdkbump截图

时间线
首次 commit 和首个版本 0.1.0:面向 native iOS、Flutter、React Native 和 Expo 项目的 SCN001 到 SCN004
0.1.1 和 0.1.2:项目文件仅在是项目内的常规文件时才被读取;无法读取的 Info.plist 现在给出“Launch not determined”而不是启动失败
0.1.3:以 @mcamdali/sdkbump 发布到 npm;每种报告格式和 stderr 中的控制字符都被清理