IOS套件管理-CocoaPods 以及 Swift package manager(SPM) 兩種方式介紹
介紹IOS的套件管理工具,CocoaPods 以及 Swift Package Manager(SPM)
CocoaPods以ios有名的圖表視覺化Package - Charts為例。 github_My_Pod
Swift Package Manager以Package - SwiftyBeaver為例。 github_My_SPM
原本想說應該都用Charts這Package做展示的 不過我實際在SPM安裝Charts,有點問題。文檔上也沒寫到如何使用SPM安裝
前言:為什麼會寫這文章呢?因為Swift更動的速度太快, 網路上中文的ios套件管理工具,有的都已經有點舊了,不適用了。 因網路上的SPM多半是swift3版本的。 因此最近有空來分享一下swift4版本的做法! 有錯請指正!
在ios中有3個主流的套件管理工具 以下來短評(極主觀
- CocoaPods
- 較為主流的方式
- 我認為最簡單的套件管理方式
- Swift Package Manager
- 官方支持
- 支援的Package較少
- 會遇到的問題很多
- Carthage
- 我沒用過,不評論。
建議找每個package都支援的套件管理工具,會省去你很多麻煩。
Swift每年都在更新,要找到Package支援新版本的Swift其實不容易,
然而又要找到支援同樣的套件管理工具,真的難上加難。
首先看一下Charts的github page 其實他是支持CocoaPods以及Carthage 接下來進入正文
CocoaPods
首先我們先創建一個Single View的App
之後我們命名為test_pod
打開ViewController.swift
我們可以先天真的import charts看他有沒有反應,
理所當然地會出現下面的畫面
那我們要來解決這個問題,就是讓package可以使用Pod正確安裝!!
第一步為打開你的command
切換到剛剛的資料夾
cd test_Pod
輸入下面一行,創建好Pod所需的環境
pod init open -a Xcode Podfile
接下來會出現一個文字編輯器,有以下的程式碼區塊
那基本上只要在第7行開始
輸入你要安裝的package
像我們要安裝的是Charts
所以我們只要輸入
pod ‘Charts’
完成後如下圖
之後輸入
pod install
完成後的圖如下
之後會發現多了一個檔案 test_Pod.xcworkspace
CocoaPod 安裝Package的特色是會產生一個.xcworkspace
之後都要開啟這檔案,他就會自動幫你link
開啟後要先build一次
這樣你import後就不會出現錯誤訊息囉~
如果有不清楚的地方
可以觀看此次的成果
Swift Package Manager
首先我們先創建一個Single View的App
之後我們命名為test_SPM
打開ViewController.swift
我們可以先天真的import SwiftyBeaver 看他有沒有反應,
理所當然地會出現下面的畫面
接下來我們在剛剛創建的testSPM這目錄底下 創建一個資料夾Library 在該資料夾下使用command透過指令 創建SPM所需的環境
swift package init –type executable
那我們可以看到其實多了一些東西,
下面不一一介紹,我們只要知道最重要的是 Package.swift
我們將它透過文字編輯器來看
// swift-tools-version:4.0
// The swift-tools-version declares the minimum version of Swift required to build this package.
import PackageDescription
let package = Package(
name: "test_SPM",
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 which this package depends on.
.target(
name: "test_SPM",
dependencies: []),
]
)
簡單介紹一下,首先第一行的
是說這個這些package所使用的Swift版本。
我們目前所使用的swift版本是4.0
重點是第10行的
package url > 之後會帶入該package之url
from > 版本號碼
((其實也沒這麼簡單拉,這邊先這樣說明。詳細請看文件
以及第17行的
那版本號碼怎麼看呢
首先我們進入該專案的頁面SwiftyBeaver
點擊上方的release
可以看到都會有tag,那個就是版本號碼
如這張圖最新的版本號碼為1.5.2.
那我們就用這個版本吧
如果你找不到,那就點擊這個連結吧SwiftyBeaver_releases
接下來我們直接看結果 代入後會變成下面這樣
// swift-tools-version:4.0
// The swift-tools-version declares the minimum version of Swift required to build this package.
import PackageDescription
let package = Package(
name: "Library",
dependencies: [
// Dependencies declare other packages that this package depends on.
// .package(url: /* package url */, from: "1.0.0"),
.package(url: "https://github.com/SwiftyBeaver/SwiftyBeaver.git", from: "1.5.2"),
],
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 which this package depends on.
.target(
name: "Library",
dependencies: ["SwiftyBeaver"]),
]
)
之後再打開你的command
在你的 project_dir/Library 的目錄下command
swift package update
swift build
swift package generate-xcodeproj
之後會出現 Library.xcodeproj 這個檔案
然後開啟剛剛創建的Single View Controller
test_SPM這個專案
將Library.xcodeproj拉到左邊那塊
如下圖
然後我們還要設定一下link
點擊左上方的test_SPM就可以到此畫面
然後設定連結
之後就成功囉~
如果有不清楚的地方
可以觀看此次的成果