製作Cocoapods管理自己的類庫
前言:
在我們使用Cocoapods來管理我們的庫時,我們需要建立一個podspec檔案,並把這個檔案提交到Cocoapods維護的specs倉庫和自己維護的specs倉庫中,Cocoapods管理的庫倉庫地址:https://github.com/CocoaPods/Specs,
第一章、註冊Cocoapods使用者
1、檢視是否註冊了Cocoapods
➜ ~ pod trunk me
[!] You need to register a session first.
Usage:
$ pod trunk me COMMAND
Includes information about your registration, followed by all your sessions.
These are your current session, other valid sessions, unverified sessions,
and expired sessions.
Commands:
+ clean-sessions Remove sessions
Options:
--silent Show nothing
--verbose Show more debugging information
--no-ansi Show output without ANSI codes
--help Show help banner of specified command
說明還沒有註冊
➜ ~ pod trunk me
- Name: 你註冊的名稱
- Email: 你註冊的郵箱
- Since: October 30th, 22:36
- Pods: None
- Sessions:
- October 30th, 22:36 - March 7th, 2019 22:51.
說明已經註冊
2、註冊
➜ ~ pod trunk register emailAddress 'name'
[!] Please verify the session by clicking the link in the verification email that has been sent to emailAddress
這樣你會收到一封郵件,點選就可以激活了
第二章、對現有庫進行Cocoapods管理
1、建立podspec檔案
在已有的專案中建立podspec檔案
pod spec create podspec名稱
根據自己的類庫編輯podspec檔案
2、驗證podspec
pod spec lint podspec名稱.podspec --allow-warnings
-> podspec名稱 (1.0)
- NOTE | xcodebuild: note: Using new build system
- NOTE | [iOS] xcodebuild: note: Planning build
- NOTE | [iOS] xcodebuild: note: Constructing build description
- NOTE | [iOS] xcodebuild: warning: Skipping code signing because the target does not have an Info.plist file. (in target 'App')
- WARN | xcodebuild: xxxxxxx.swift:25:34: warning: 'global(priority:)' was deprecated in iOS 8.0
- WARN | xcodebuild: xxxxxxx.swift:25:52: warning: 'default' was deprecated in iOS 8.0: Use qos attributes instead
- WARN | xcodebuild: xxxxxxx.swift:33:34: warning: 'global(priority:)' was deprecated in iOS 8.0
- WARN | xcodebuild: xxxxxxx.swift:33:52: warning: 'low' was deprecated in iOS 8.0: Use qos attributes instead
Analyzed 1 podspec.
podspec名稱.podspec passed validation.
3、提交你的podspec到Cocoapods的Trunk
pod trunk push podspec名稱.podspec
解決後重新執行提交步驟即可
第三章、對建立自己的類庫並提交到Cocoapods維護的spec倉庫
1、建立自己的類庫
pod lib create MyLibrary
2、驗證庫
pod lib lint MyLibrary
3、編輯podspec檔案,驗證並提交到CocoaPods trunk
以上Podfile中的使用
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
inhibit_all_warnings!
use_frameworks!
第四章、對自己的類庫提交到自己維護spec倉庫
也可以自己搭建一個git的伺服器,並建立一個spec倉庫
2、使用pod repo可以檢視,本地的庫源
➜ ~ pod repo
artsy
- Type: git (master)
- URL: https://github.com/Artsy/Specs.git
- Path: /Users/wzkj/.cocoapods/repos/artsy
DZSpace #自己維護的spec倉庫
- Type: git (master)
- URL: https://github.com/dbk1985/DZSpace.git
- Path: /Users/wzkj/.cocoapods/repos/DZSpace
master #Cocoapods維護的spec倉庫
- Type: git (master)
- URL: https://github.com/CocoaPods/Specs.git
- Path: /Users/wzkj/.cocoapods/repos/master
3、對現有的庫只需建立一個podspec檔案,並編輯、驗證spec檔案
pod spec create podspec名稱
pod spec lint podspec名稱.podspec --allow-warnings
4、沒有庫,使用pod命令建立類庫,並編輯、驗證spec檔案
4.1 建立並驗證類庫
pod lib create MyLibrary
pod lib lint MyLibrary
4.2 編輯並驗證podspec檔案
pod spec lint MyLibrary.podspec --allow-warnings
5、建立一個spec倉庫,可以在github上建立一個spec倉庫,也可以在自己搭建的git伺服器上建立一個spec倉庫 或者使用Cocoapods的spec倉庫:https://github.com/CocoaPods/Specs.git
使用Cocoapods的spec倉庫只需要使用pod setup就可以了
檢視spec倉庫 pod repo
使用自己建立的倉庫,需要使用
pod repo add spec名稱 自己建立的spec倉庫地址
檢視spec倉庫 使用命令 pod repo
就可以看到有一個自己的spec倉庫,叫(spec名稱)
5、提交到自己spec倉庫
pod repo push spec名稱 MyLibrary.podspec --allow-warnings
spec名稱為使用pod spec add spec名稱 spec伺服器地址
6、使用pod repo push xxx 提交到spec倉庫時報錯:
->
- ERROR | [iOS] xcodebuild: Returned an unsuccessful exit code.
- NOTE | xcodebuild: note: Using new build system
- NOTE | [iOS] xcodebuild: note: Planning build
- NOTE | [iOS] xcodebuild: note: Constructing build description
- NOTE | [iOS] xcodebuild: warning: Skipping code signing because the target does not have an Info.plist file. (in target 'App')
- ERROR | [iOS] xcodebuild: xxxxx.swift:9:12: error: overriding declaration requires an 'override' keyword
- NOTE | xcodebuild: ObjectiveC.NSObject:6:12: note: overridden declaration is here
- ERROR | [iOS] xcodebuild: xxxxxx.swift:21:12: error: overriding declaration requires an 'override' keyword
- WARN | [iOS] xcodebuild: xxxxxx.swift:25:34: warning: 'global(priority:)' was deprecated in iOS 8.0
- WARN | [iOS] xcodebuild: xxxxxx.swift:25:52: warning: 'default' was deprecated in iOS 8.0: Use qos attributes instead
- WARN | [iOS] xcodebuild: xxxxxx.swift:33:34: warning: 'global(priority:)' was deprecated in iOS 8.0
- WARN | [iOS] xcodebuild: xxxxxx.swift:33:52: warning: 'low' was deprecated in iOS 8.0: Use qos attributes instead
[!] The `MyLibrary.podspec` specification does not validate.
這個時候我們使用 pod repo push DZSpace MyLibrary.podspec --allow-warnings --verbose 來檢視具體問題出來哪裡,
修改還是報錯,這個時候我們修改清除pod的快取,因為使用pod repo push的使用,pod會從快取中複製工程,然後在編譯驗證
細節如下:
-> Installing xxxxxxx(podspec名稱) (1.1)
> Copying xxxxxxx(podspec名稱) from `/Users/aaaaa/Library/Caches/CocoaPods/Pods/External/xxxxxxx(podspec名稱)/7e5edc35e9cd0c2294b8629a9b1ed283-a04a3` to
`../../../../private/var/folders/35/7_wtqrpd54d_npk6l9j9ty8r0000gn/T/CocoaPods-Lint-20181101-30234-17i1jtl-xxxxxxx(podspec名稱)/Pods/xxxxxxx(podspec名稱)`
- Running pre install hooks
所以修改後總是報錯,清除快取或直接刪除重新執行就OK,
pod 檢視快取命令
使用 pod cache list 檢視看快取
使用 pod cache clean --all 清除快取
7、自己建立的spec庫使用時,podfile中需要新增庫源:spec倉庫地址
source 'https://github.com/CocoaPods/Specs.git' // Cocoapods 倉庫源
source "https://github.com/xxxx/xxxxxxx.git" // 自己建立的spec倉庫源
platform :ios, '8.0'
inhibit_all_warnings!
use_frameworks!