让你的CocoaPods开源库同时支持SPM指南

前言

SPM(Swift Package Manager)是苹果WWDC 2019推出的Swift包管理工具,可以让你的开源库直接在Xcode上可以clone,非常的方便。iOS开发者众所周知,iOS目前最多人用的包管理器依然是CocoaPods,如何让你的开源库已经支持CocoaPods的情况下,依然兼容SPM?下面我以自己项目JFPopup为例,看下如何在此基础上改造成支持SPM。

改造过程

添加Package.swift 配置文件

首先我们在原先podspec文件同级目录下新建添加Package.swift配置文件(SPM的配置文件)编写下面代码

less 复制代码
let package = Package(

name: "JFPopup",

platforms: [.iOS(.v11)],

products: [

.library(

name: "JFPopup",

targets: ["JFPopup"]),

],

dependencies: [

.package(url: "https://github.com/JerryFans/JRBaseKit.git", from: "1.1.0"),

],

targets: [

.target(

name: "JFPopup",

dependencies: [

.product(name: "JRBaseKit", package: "JRBaseKit")

],

resources: [.process("Resources")])

]

)
  • name

name 参数代码项目名字

  • platforms

代表支持的平台以及最低支持版本,我这里仅支持iOS11以上。

  • products

照着写成你的项目名字即可

  • dependencies

项目依赖,代表你的项目依赖另外一个SPM库的话,需要在这里声明依赖

  • targets

这里摸索了比较久,我是想新建一个Resources目录处理一些资源文件(图片等)所以需要额外声明,如果你的项目没有额外的图片等资源,可以不处理这一个声明。

css 复制代码
resources: [.process("Resources")])

这样处理完毕后,你需要在你的项目更目录下新建Sources目录把源码都迁移进去Sources/JFpopup里面,资源目录在Resources目录。

podspec 文件改造

改造完支持SPM后因为项目源码位置发生了改变,我们只需更改下即可。

ini 复制代码
s.source_files = 'Sources/JFPopup/Classes/**/*'

结果

这样项目就同时支持SPM和CocoaPods了,打上tag,commit push后,SPM自动支持新版本,CocoaPods加下版本号,再pod trunk push一次发一次新版即可。

相关推荐
VicLi8 小时前
把常用 iOS 调试操作放进一个 macOS 控制台: iCATBox
ios
茶底世界之下9 小时前
雾景需要更强反差吗?用 Awaking 检查树影与雾气的平衡
ios
终端安全笔记11 小时前
下一个大版本要动的三处:更新指令、传输要求、策略写法
网络安全·ios·1024程序员节·移动设备管理
法的空间12 小时前
AI 编程时代,为什么 Dart 分析会拖慢大型项目的开发
android·flutter·ios
season_zhu12 小时前
Skills For Real Engineers 系列之二:grill,把需求想清楚,也别把自己问进死胡同
ios·ai编程
andyweike15 小时前
CocoaPods
xcode·cocoapods
美狐美颜SDK开放平台1 天前
准备开发直播APP?视频美颜SDK接入前的十项检查清单
android·ios·音视频·直播美颜sdk·视频美颜sdk
承渊政道2 天前
iOS远程控制电脑用什么好?iPhoneiPad远程控制Windows电脑最佳方案2026横评
windows·ios·远程控制·1024程序员节·iphone ipad
茶底世界之下2 天前
彩色建筑适合转黑白吗?用 Awaking 检查颜色消失后的层次
ios
黑科技iOS上架2 天前
App Store 26年10月新应用审核放缓大量应用不进审
ios·审核