包管理的三種方式
CocoaPods
Carthage
Swift Package Manager
CocoaPods
- CocoaPods 是非常好用的第三方依賴管理工具。它于2011年發布,經過這幾年的發展,已經非 常完善。CocoaPods 支持項目中采用 Objective-C 或 swift 語言。CocoaPods 會將第三方庫 的源代碼編譯為靜態庫 .a 文件或者動態框架 .framework 文件的形式,并將它們添加到項目 中,建立依賴關系。
Carthage
Carthage 是一個輕量級的項目依賴管理工具。Carthage 主張“去中心化”和“非侵入性”。 CocoaPods 搭建了一個中心庫,第三方庫被收入到該中心庫,所以沒有收錄的第三方庫是不能 使用 CocoaPods 管理的,這就是所謂的“中心化”思想。而 Carthage 沒有這樣的中心庫,第 三方庫基本上都是從 GitHub 或者私有 git 庫中下載的,這就是“去中心化”。另外, CocoaPods 下載第三方庫后,會將其編譯成靜態鏈接庫或者動態框架文件,這種做法會修改 Xcode 項目屬性配置依賴關系,這就是所謂的“侵入性”。而 Carthage 下載成功后,會將第 三方庫編譯為動態框架,由開發人員自己配置依賴關系,Carthage 不會修改 Xcode 項目屬 性,這就是所謂的“非侵入性”。
-
使用 brew 安裝 carthage。
01 -
創建 cartfile 文件。
02 -
修改 cartfile 文件。
03
cartfile - Dependency origin
- Carthage支持兩種類型的源,一個是 github ,另一個是 git
github 表示依賴源,告訴 Carthage 去哪里下載文件。依賴源之后跟上要下載的庫,格式為 Username/ProjectName
Git 關鍵字后面跟的是資料庫的地址,可以是遠程的 URL 地址,使用 git://, http://, ssh://, 或者是本地資料庫地址。
cartfile - Dependency Version
- 告訴 Carthage 使用哪個版本,這是可選的,不寫默認使用最新版本
== 1.0 表示使用1.0版本
= 1.0 表示使用1.0或更高的版本
~> 1.0 表示使用版本1.0以上但是低于2.0的最新版本,如1.2,1.6
branch名稱 / tag名稱 / commit名稱,意思是使用特定的分支/標簽/提交,比如可以是分支名 master,也可以是提交5c8a74a
-
carthage update
04 -
carthage update --platform iOS
05 -
Cartfile.resolved 文件和 Carthage 目錄
06
Cartfile.resolved 文件
- 這個文件是生成后的依賴關系以及各個庫的版本號,不能修改。
-
Cartfile.resolved 文件確保提交的項目可以使用完全相同的配置與方式運行啟用。 跟蹤項目當前所用的 依賴版本號,保持多端開發一致,出于這個原因,建議提交這個文件到版本控制中。
07
Carthage 目錄
- Checkouts 保存從git拉取的依賴庫源文件。
-
Build 包含編譯后的文件,包含 Mac 與 iOS 對應的 .framework。
08
項目配置
-
項目 Target -> Build Setting -> Search Paths -> Framework Search Paths 添加 $(PROJECT_DIR)/Carthage/ Build/iOS
09
2)項目Target -> Build Phases -> '+' -> New Run Script Phase:
添加腳本 /usr/local/bin/Carthage copy-frameworks
添加"Input Files" $(SRCROOT)/Carthage/Build/iOS/Alamofire.framework 等等
Swift Package Manager
- Swift Package Manager 是蘋果推出的用于管理分發 swift 代碼的工具,可以用于創建使用 swift 的庫和可執行程序。
- 能夠通過命令快速創建 library 或者可執行的 swift 程序,能夠跨平臺使用,使開發出來的項目能夠 在不同平臺上運行。
Xcode 集成
繼續學習 Swift
官方文檔 - https://docs.swift.org/swift-book/
源碼 - https://github.com/apple/swift
objc.io - https://www.objc.io/
大前端
簡單來說,大前端就是所有前端的統稱,比如 Android、iOS、web、Watch 等,最接近用戶的 那一層也就是UI層,然后將其統一起來,就是大前端。大前端最大的特點在于一次開發,同時適 用于所有平臺,開發者不用為一個 APP 需要做 Android 和 iOS 兩種模式而擔心。大前端是web 統一的時代,利用 web 不僅能開發出網站,更可以開發手機端 web 應用和移動端應用程序。
跨平臺
H5+原生(Cordova、Ionic、微信小程序)
JavaScript開發+原生渲染 (React Native、Weex、快應用)
自繪UI+原生(Flutter)
增強版Web App(PWA)