以前在有道云整理的筆記,分享出來,有問題望大家指正,來從零開始構(gòu)建一個私有庫,分解為四步:
1. 創(chuàng)建遠程私有索引庫(基于碼云)
- 在碼云上創(chuàng)建私有庫倉庫
// 私有庫地址
https://gitee.com/enlake/library
// git地址
https://gitee.com/enlake/library.git
// ssh
git@gitee.com:enlake/library.git
- 初始化,將遠程私有庫關(guān)聯(lián)到本地
cd /Users/liqun/.cocoapods/repos
liqun@liqundeMacBook-Pro repos % pod repo add MyLib https://gitee.com/enlake/library.git
- 查詢之前創(chuàng)建好的私有庫
liqun@liqundeMacBook-Pro LQCommon % pod repo list
MyLib
- Type: git (unknown)
- URL: https://gitee.com/enlake/library.git
- Path: /Users/liqun/.cocoapods/repos/MyLib
- 下載克隆到本地
/Users/liqun/Desktop/gitee項目/Library
2. 創(chuàng)建私有庫demo倉庫(碼云)
- 再創(chuàng)建一個demo倉庫
// 私有庫demo地址
https://gitee.com/enlake/lib-demo
// git地址
https://gitee.com/enlake/lib-demo.git
// ssh
git@gitee.com:enlake/lib-demo.git
- 初始化,下載克隆到本地
liqun@liqundeMacBook-Pro ~ % cd /Users/liqun/Desktop/gitee項目/Lib-Demo
接下來創(chuàng)建私有庫
//Cloning https://github.com/CocoaPods/pod-template.git into ProjectName.
//創(chuàng)建一個和指定的項目名相同的文件夾,然后將pod-template克隆下拉
//Configuring TemplateDemo template
//對當(dāng)前項目進行配置
//pod-template是cocoapods官方提供的一個模板,主要模板是否下載成功,報錯看文末備注1,報錯就多試幾次。
//這段指令的解讀可以看文末備注2
liqun@liqundeMacBook-Pro Lib-Demo % pod lib create LQCommon
創(chuàng)建成功后,會得到一個空項目,
使用完整的庫代碼替換
/Users/liqun/Desktop/gitee項目/Lib-Demo/LQCommon/LQCommon/Classes/ReplaceMe.m
在/Users/liqun/Desktop/gitee項目/Lib-Demo/LQCommon/Example,執(zhí)行pod install,podfile內(nèi)容見備注2。
liqun@liqundeMacBook-Pro LQCommon % cd Example
liqun@liqundeMacBook-Pro Example % pod install
3. 上傳至遠程庫
- 私有庫拉一個的標(biāo)號為0.1.0的版本。
liqun@liqundeMacBook-Pro LQCommon % cd /Users/liqun/Desktop/gitee項目/Lib-Demo/LQCommon
liqun@liqundeMacBook-Pro LQCommon % git remote add origin https://gitee.com/enlake/lqcommon.git
liqun@liqundeMacBook-Pro LQCommon % git status
// 無有改動跳過添加、提交
liqun@liqundeMacBook-Pro LQCommon % git add .
liqun@liqundeMacBook-Pro LQCommon % git commit -m 'common-lib'
// 如果有沖突,將沖突改掉,標(biāo)記解決,再次提交
liqun@liqundeMacBook-Pro LQCommon % git pull --rebase origin master
liqun@liqundeMacBook-Pro LQCommon % git rebase --continue
liqun@liqundeMacBook-Pro LQCommon % git tag 0.1.0
liqun@liqundeMacBook-Pro LQCommon % git push --tags
// 如果原來存在標(biāo)簽,需要刪除標(biāo)簽,再添加推送。
// 刪除本地tag
liqun@liqundeMacBook-Pro LQCommon % git tag -d 0.1.0
// 刪除遠端tag
liqun@liqundeMacBook-Pro LQCommon % git push origin :refs/tags/0.1.0
- 修改文件LQCommon.podspec
// 私有庫對外公開的頭文件,沒有這行的話默認(rèn)所有文件都是公開的
# s.public_header_files = 'Pod/Classes/**/*.h'
- s.public_header_files與s.source_files說明
s.source_files 配置三方庫的源文件(.h或.m文件),swift是配置.swift文件
寫法:
OC:s.source_files = "Classes/**/*.{h,m}"#Classes路徑下的所有匹配文件
s.source_files = "Classes/*.{h,m}"#Classes文件夾下的所有匹配文件
s.source_files = “Classes/PageController.{h,m}"#直接指定文件名
Swift:s.source_files = "Classes/**/*.{swift}"#Classes路徑下的所有匹配文件
s.source_files = "Classes/*.{swift}"#Classes文件夾下的所有匹配文件
s.source_files = “Classes/PageController.{swift}"#直接指定文件名
public_header_files頭文件
s.public_header_files = "Classes/**/*.h"#Classes路徑下所匹配的.h文件
s.public_header_files = "Classes/*.h"
s.public_header_files = "Classes/Public.h"
// 從本地和遠程驗證pod能否驗證通過
liqun@liqundeMacBook-Pro LQCommon % pod spec lint --allow-warnings
// 允許警告,用來解決由于代碼中存在警告導(dǎo)致不能通過校驗的問題
liqun@liqundeMacBook-Pro LQCommon % pod lib lint --allow-warnings
4. 關(guān)聯(lián)LQCommon.podspec和MyLib
liqun@liqundeMacBook-Pro LQCommon % pod repo push MyLib LQCommon.podspec --verbose --allow-warnings
-> LQCommon (0.1.0)
包含創(chuàng)建App基礎(chǔ)代碼,包括了常用宏定義,還包含了公共方法:顏色、日期、圖片、對象、字符串、系統(tǒng)等。
liqun@liqundeMacBook-Pro LQCommon % pod search LQCommon
pod 'LQCommon', '~> 0.1.0'
- Homepage: https://gitee.com/enlake/lqcommon
- Source: https://gitee.com/enlake/lqcommon.git
- Versions: 0.1.0 [MyLib repo]
如果提示:[!] The EQXActivityView.podspec specification does not validate.
pod repo push MyLib LQCommon.podspec --verbose --allow-warnings --use-libraries --skip-import-validation
備注1:
- 我們?nèi)プ约旱拇a云或者gitlab上邊上傳下載好的模版,下載地址: https://github.com/CocoaPods/pod-template.git
- 上傳到自己的倉庫中:https://gitee.com/enlake/pod-template.git,以后使用。
備注2:
我們需要先知道下邊代碼的含義:(失敗盡量多試幾次,或者過段時間使用,GitHub經(jīng)常訪問失敗)
pod lib create ObjcName
實際上等同于:
pod lib create ProjectName --template-url=https://github.com/CocoaPods/pod-template.git
備注3:
//注意平臺版本
use_frameworks!
platform :ios, '10.0'
target 'LQCommon_Tests' do
pod 'LQCommon', :path => '../'
end