Swift Package Manager 库制作
Swift Package Manager 是苹果官方推出的库管理工具。类似 cocoapods。
准备事项:
- 一个需要封装的库
- 存放库的远程仓库,如 github、gitee、gitLab等
创建Package
创建 Package 有2种方式,命令行和 Xcode。
一、命令行
首先创建包名
mkdir SPMTest
cd SPMTest
创建 package 项目
swift package init
此时我们已经创建好了一个包项目,只需要双击 Package.swift 文件即可启动 Xcode,进行编码和测试。
我们也可以使用swift package generate-xcodeproj
来生成 xcode 项目,但是一般不需要。
Tips: 对于已经存在的库, 我们可以指定源码路径, 不一定要使用默认的构建源码路径
二、Xcode
通过 Xcode 开发工具,我们也可以新建一个 Package 项目。
输入库名即可。
Package 文件编辑
Package.swift
相当于 Cocoapods 库的 xxx.podspes
文件,是对库的配置。
示例:
import PackageDescriptionlet package = Package(name: "SPMTest",products: [// Products define the executables and libraries a package produces, and make them visible to other packages..library(name: "SPMTest",targets: ["SPMTest"]),],dependencies: [// Dependencies declare other packages that this package depends on.// .package(url: /* package url */, from: "1.0.0"),],targets: [// Targets are the basic building blocks of a package. A target can define a module or a test suite.// Targets can depend on other targets in this package, and on products in packages this package depends on..target(name: "SPMTest",dependencies: []),.testTarget(name: "SPMTestTests",dependencies: ["SPMTest"]),]
)
默认添加 name、products、targets,还可以添加其他参数,但是需要按照顺序。
参数解释
name:库包的名称;
defaultLocalization:资源的默认本地化;
platforms:支持的最低系统平台的列表;
pkgConfig:用于C模块的名称。如果存在,Xcode将搜索.pc文件以获取系统目标所需的其他标志;
providers:系统目标的程序包提供者;
products:此软件包可让客户使用的产品列表;
dependencies:软件包依赖项列表(可空,或需要其它外部依赖);
targets:属于此软件包的目标列表(源码目录、测试目录);
swiftLanguageVersions:此软件包兼容的Swift版本列表;
cLanguageStandard:用于此程序包中所有C目标的C语言标准;
cxxLanguageStandard:用于此程序包中所有C ++目标的C ++语言标准;
测试
一、 单元测试
自行封装的库,建议写好单元测试,以便后期维护和保证库的稳定性。
二、使用测试
在库还没有推到远程仓库,或者没有发布时,本地该如何测试?
将库文件夹手动拉入项目,手动添加库
Tips: Xcode 可在不删除远程库的条件下,添加本地库调试(本地库会覆盖远程库),调试完成删除即可
使用
我们可以在 Xcode 的菜单栏 File -> Swift Pakcages -> Add Package Dependncy进入添加页面。
也可以直接选择项目,进入PROJECT 选择 Swift Packages
复制库地址或者搜索库选择之后,选择版本号,等待下载就可以了。
Tips: 没有发布 release 的库 只能通过
branch
或者commit
下载代码
项目使用的 SPM 库文件路径在[appName].xcodeproj/project.workspace/xcshareddata/swiftpm/Package.resolved
更新第三方库
我们使用 Cocoapods 的时候可以随时通过 pod install
或者 pod update
将库更新到最新,如果使用 Swift Package Manager 怎么更新了。
虽然Xcode会更新你的包依赖并自动解析包版本,但你可以从File > Swift Packages菜单中触发这两个动作。
如下图,选择更新库。
参考
Swift Package Manager介绍 – raywenderlich
如何让自己的库支持 Swift Package Manager
how to use swift package manager – Mobile Thinking: 英文介绍,包含如何创建和使用。
iOS 包依赖管理工具(五):Swift Pakcage Manager自定义篇 – 简书-青叶小小
WWDC2020 - Swift Package Manager – kemchenj
Swift Package Manager 库制作相关推荐
- combin14_使用SwiftUI,Combin和Swift Package Manager(SPM)构建复杂的模块化架构
combin14 We should imagine a modular architecture like a modular building. We need to put pre-design ...
- [翻译练习] Swift Package Manager 重写 macOS 部署目标
译自:oleb.net/blog/2017/0- Swift 3.1 修复了 Swift Package Manager 无法重写 MacOS 部署目标的 Bug. 当你在 macOS 上执行 swi ...
- Xcode Swift package manager 无法下载 GitHub 包问题
解决方法: 使用终端进入项目根目录 复制并在终端运行终端代理命令 最后运行如下命令 xcodebuild -resolvePackageDependencies -scmProvider system ...
- Swift tips 017 - Speeding up Swift package tests
代码截图 代码出处: Swift Tips 017 by John Sundell[1] 小笔记 这段代码在说什么 Swift Package Manager(Swift 包管理器,一般简称 Swif ...
- node和npm是什么_什么是npm? 面向初学者的Node Package Manager教程
node和npm是什么 This article should serve as an all-in-one essential guide for Node.js' favorite sidekic ...
- 静态库制作-混编(工程是oc为基础)
最近工作需要,需要制作一些静态库.由于缺乏经验,特意找了一些资料,加上自己的测试.特意在此记录一些心得和踩过的坑.所谓"好记性不如烂笔头",希望自己以后忘记的时候能回头来看看,同时 ...
- 少女风vue组件库制作全攻略~~
预览 组件库官网 github地址 如果喜欢各位小哥哥小姐姐给个小星星鼓励一下哈, 请勿在生产环境中使用,供学习&交流~~ 完整项目目录结构 git clone到本地安装依赖后,执行npm r ...
- 深入安卓Package Manager和Package Installer
我们每天都在安装和卸载APK(安卓应用程序包文件),或许一天会有好几次,但是你有想过下面问题吗? 什么是Package Manager(包管理器)和Package Installer(程序安装包)? ...
- 使用 Swift Package 插件生成代码
前言 不久前,我正在工作中开发一项新服务,该服务由 Swift Package 组成,该 Package 公开了一个类似于Decodable协议,供我们应用程序的其余部分使用.事实上,该协议是从Dec ...
最新文章
- 2019半年总结:Teams are powerful
- 《大道至简》一书第三版,与编辑就本书写作风格的讨论
- CAS单点登录3--服务端登录页个性化
- 浏览器差异总结,可以用此判断浏览器版本(转)
- leetcode--数组(Medium1)
- python中response对象的属性_Django 中的响应对象 Response
- 探索数据可视化,业务数据是核心
- 用计算机模拟宇宙,计算机中的宇宙
- Kubernetes 搭建 ES 集群(存储使用 local pv)
- Unity: 打飞碟简单版
- 【Web:Bootstrap框架】简单实现理解
- linux md5sum 文件夹,每天一个 Linux 命令(63):cksum、md5sum、sha1sum命令
- 短信验证功能、邮箱验证功能
- imx6ul的sd卡启动过程分析
- android下拉框代码,Android下拉列表spinner的实例代码
- 基于Python的工人员工工资管理系统
- 什么是期权?如何从概念上理解看涨期权/看跌期权?
- 欧洲语言c1怎么考,【从A1到C2】欧洲共同语言参考标准对应的德语考试
- net framework 4 0如何安装 安装失败怎么办
- llinux服务器7277端口未开启,造成was控制台中node agent远程节点显示停用状态