SuperAPI AI 工具集

cocoapods-to-spm

通用与其它

查看项目

更新于 10-15 16:40

技能介绍

用途:把已有的 Capacitor iOS 工程从 CocoaPods 迁移到 Swift Package Manager(SPM),并尽量避免丢失原生工程的自定义配置。适用于项目存在 ios/App/Podfile、Pods/、Podfile.lock 或 App.xcworkspace 且用户希望改用 SPM 的情况;也适用于关注 CocoaPods Trunk 只读、npx cap sync 提示插件不兼容 SPM,或升级 Capacitor 9 同时想移除 CocoaPods 的场景。

主要能力与判断逻辑:CLI 以 ios/App/CapApp-SPM/ 是否存在来判定工程是否走 SPM;ios/App/CapApp-SPM/Package.swift 在每次 npx cap sync ios 时会被重新生成,自定义应放在 capacitor.config.* 中;插件只有在 npm 包根目录存在 Package.swift 时才会被包含,否则被跳过并在运行时提示插件未在 iOS 实现;Cordova 插件会在 ios/capacitor-cordova-ios-plugins/sources/<Name> 下生成包;.framework 不支持作为 SPM binaryTarget,需要 .xcframework。

使用方式:先做只读检查(Capacitor 版本、Podfile 与 Podfile.lock 中的 pod、各插件是否含 Package.swift、Xcode 工程的签名与构建设置、原生自定义文件),报告后再修改;对无 SPM 支持的插件进行升级、替换或转换。可选路径包括运行 npx cap spm-migration-assistant(需保留 CocoaPods 或 Bundler 以执行 pod deintegrate)、全新脚手架(rm -rf ios 后 npx cap add ios --packagemanager SPM 与 npx cap sync ios),或手动修复。迁移助手执行后仍需在 Xcode 中把 ios/App/CapApp-SPM 作为本地包添加到 App 目标并链接,并将 Debug 配置指向 debug.xcconfig,然后运行 npx cap sync ios。验证包括检查无 CocoaPods 残留、同步输出、packageClassList 与用 xcodebuild 构建。命令应从包含 capacitor.config.* 的目录执行,Capacitor CLI 调用保持 npx cap ...。

限制:不负责插件自身的 Package.swift 添加、UIScene 迁移、Capacitor 大版本升级或与依赖管理无关的构建/运行失败;若关键插件没有 SPM 方案应先询问用户,不要维持 Podfile 与 CapApp-SPM 混合状态。实验性 SPM 配置项需确认当前 CLI 版本支持。具体收费与平台信息暂未提供。