客户管理系统开发定制SwiftPM(Swift Package Manager)

什么是SwiftPM

SwiftPM(Swift Package Manager)是 2018 客户管理系统开发定制年苹果官方推出供 Swift 客户管理系统开发定制开发者进行包管理的工具,客户管理系统开发定制相当于我们一直使用的Cocoapods,客户管理系统开发定制及近年来开始火的Carthage。

客户管理系统开发定制为什么要推出SwiftPM

客户管理系统开发定制使用最广泛的工具,依赖放在各个源(master 或者 自己的源)上的 podspec 文件进行下载代码库,在本地生成一个 workspace 进行统一管理、添加依赖。

  • 自动化/侵入性高:一键配置和集成依赖/自动更改 Xcode.project 的配置
  • 中心化:提供各个源管理仓库配置文件,所有更新仓库文件索引可能会很慢。
  • 缓存:除了项目根目录的缓存之外,还有较完整的本地缓存体系,所以不同工程下载同一个库时会直接从本地拿。

  • 去中心化:没有统一管理的中心,所以没有更新中心服务器的文件索引这种耗时步骤
  • 成本略高/侵入性低:Carthage 只会帮你把各个库下载到本地(默认会编译成静态库),具体的 Project 配置需要自己弄
  • 生态环境:很差,很多库都没有提供这种依赖方式
  • 缓存:只有项目根目录的缓存,所以不同项目对于同一个库需要重新下载

SwiftPM来了

官方推出,值得信赖。Swift编写,Xcode自动集成,不需要第三方脚本来管理,无需配置环境,实现的所有功能,对项目本身无影响,无侵入,经测试编译速度和相当。

在Xcode中的使用

点击项目-PROJECT-+,如图:

打开如下页面,在输入框中输入要安装的三方库git地址,如Snapkit的   点击next。

导入规则 Rules 有三个选项: VersionBranchCommit

其中的 Version 可指定库的版本更新规则:

  1. Up to Next Major: 直到下一个大版本(5.2.2 ~ 6.00)
  2. Up to Next minor: 直到下一个中版本(5.2.2 ~ 5.3.0)
  3. Range: 限定版本范围(自定义范围)
  4. Exact: 指定固定版本(5.2.2)

没有特殊需求就使用默认选项,点击 Next 按钮,等待 Xcode 从网上拉取完毕,如搜索结果有多格如下图,请勾选要搜索的库,然后点击finish,如未勾选,目录里有但是无法import

点击finish即可在目录栏中看到新出现的三方库库目录Swift Dependencies

 有在Source目录下显示三方库的源码,并且多了Example目录,展示使用三方库使用方法的demo

Pacakage.swift三方库相关配置文件,配置文件中采用声明式语法创建了一个 Package 对象,Package 类来自 PackageDescription包 ,其主要作用是对包的描述。图中 Almofire 的配置参数如下:

name: 包名
platforms: 支持的平台
products: 编译后的library
targets: 包中包含的targets,其中.testTarget是供测试的target
swiftLanguageVersions: 库所使用的的 Swift 版本

除此之外,dependencies 参数为库指定依赖的库,SwiftPM 会自动加载所有依赖的库。例如在引入 Realm 时,其依赖于 RealmCore, Package.swift 中可以看到该字段:

  1. let package = Package(
  2. //......
  3. dependencies: [
  4. .package(url: "https://github.com/realm/realm-core",.exact(Version(coreVersionStr)!)),
  5. ],
  6. //......

在 SwiftPM 加载时会自动加载指定 url 处的 realm-core。加载完毕后可在 Swift Package Dependencies 中看到 RealmCore。

更多配置相关的参数可以进入到 PackageDescription 库查看(即 Package.swift 文件头部 import 的 PackageDescription)

导入三方库的配置文件不需要我们更改什么,如果是我们自己创建的库给别人使用,或者直接将 SwiftPM 用来工程模块化,就需要自定义 Package.swift 中的参数。

调用三方库

import SnapKit

更新仓库版本号

右击当前库-Update Package即可


用Swift PM制作自己的组件

新建Swift PM库,命名为,创建完毕后Xcode自动为我们生成好了库的结构

​​​​​​​​​​​​​​

将代码和资源文件加入到该模块的 Source文件夹 中。

组件配置文件:package.swift,内容​​​​​​​​​​​​​​包括:

name :组件名

platforms:支持的平台

platforms可以配置支持的平台版本,支持最低iOS10,.iOS(.v10)

Dependencies

若有依赖于其他库可在 .dependencies字段后添加所依赖库的git地址,url:依赖库的git地址,from:依赖库的版本号

targets

Swift将代码组织到模块中。每个模块都指定一个名称空间,并强制执行访问控制,以便可以在该模块外部使用该代码的哪些部分。可以将所有代码都放在一个模块中,也可以将其他模块作为依赖项导入。将解决特定问题的代码提取到一个单独的模块中,可以在其他情况下重用该代码。

Products

目标可以构建库或可执行文件作为其产品。一个库包含一个可以被其他Swift代码导入的模块。可执行文件是可以由操作系统运行的程序。

swiftLanguageVersions

swift语言版本

  1. let package = Package(
  2. name: "MySwiftPakage",
  3. platforms: [
  4. .iOS(.v10),
  5. .macOS(.v10_12),
  6. .tvOS(.v10)
  7. ],
  8. products: [
  9. // Products define the executables and libraries a package produces, and make them visible to other packages.
  10. .library(
  11. name: "MySwiftPakage",
  12. targets: ["MySwiftPakage"]),
  13. ],
  14. dependencies: [
  15. .package(url: "https://github.com/Alamofire/Alamofire.git", .upToNextMajor(from: "5.0.0")),
  16. ],
  17. targets: [
  18. // Targets are the basic building blocks of a package. A target can define a module or a test suite.
  19. // Targets can depend on other targets in this package, and on products in packages this package depends on.
  20. .target(
  21. name: "MySwiftPakage",
  22. dependencies: []),
  23. .testTarget(
  24. name: "MySwiftPakageTests",
  25. dependencies: ["MySwiftPakage"]),
  26. ],
  27. swiftLanguageVersions: [
  28. .v5
  29. ]
  30. )

其它配置请参考官方文档:

配置好建好git仓库,上传git,用做测试的git地址:

  1. $ git init
  2. $ git add .
  3. $ git remote add origin [https://github.com/Leo623/SwiftPMTest]
  4. $ git commit -m "第一次SwiftPM测试"
  5. $ git push origin master
  6. $ git tag 1.0.0
  7. $ git push --tags

传上去后就可以在项目中使用了,是不是非常简单好用呢

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发