創(chuàng)建私有repo
Spec Repo
可以當成是所有pod內(nèi)容的索引的集合,本質(zhì)是一個git倉庫,目前默認的repo使用的是Master這個倉庫,當使用pod setup
命令時會將spec repo
拉取到本地~/.cocoapods/repos
目錄下,pod會根據(jù)索引的內(nèi)容拉取內(nèi)容。創(chuàng)建私有庫需要使用一個私有的倉庫,并將將這個倉庫加入到repo中之后管理這個倉庫。創(chuàng)建過程如下:
- 創(chuàng)建一個私有倉庫
- 在終端中執(zhí)行如下命令添加repo
pod repo add [Private Repo Name] [GitHub HTTPS clone URL]
如果添加成功在~/.cocoapods/repos會找到添加repo的文件夾。
創(chuàng)建podspec
使用podspec模板
cocoaPods提供了podspec模板,可以直接在模板中開發(fā)
在終端中執(zhí)行如下命令
pod lib create [項目名]
創(chuàng)建模板
之后會出現(xiàn)一些選項比如選擇Swift還是Objc構(gòu)建項目,你是否選擇一個測試框架等根據(jù)需求選擇即可。之后會在目標路徑創(chuàng)建一個項目,同時項目中存在了一個podspec文件,需要將開發(fā)用到的文件放入Classes
文件夾中不需要另外配置podspec中的文件路徑,并將項目提交到git中,之后配置好podspec就可以提交了。
對于已有項目創(chuàng)建podspec
已有項目中可以直接在項目中創(chuàng)建spec文件
在終端中執(zhí)行如下命令
[pod spec create] [項目名]
創(chuàng)建spec文件,之后配置podspec文件,就可以上傳了。
podspec格式
#
# Be sure to run `pod lib lint TestPod.podspec' to ensure this is a
# valid spec before submitting.
#
# Any lines starting with a # are optional, but their use is encouraged
# To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html
#
Pod::Spec.new do |s|
#名稱
s.name = 'TestPod'
#版本號
s.version = '0.1.1'
#簡介
s.summary = 'A short description of testPod.'
# This description is used to generate tags and improve search results.
# * Think: What does it do? Why did you write it? What is the focus?
# * Try to keep it short, snappy and to the point.
# * Write the description between the DESC delimiters below.
# * Finally, don't worry about the indent, CocoaPods strips it!
s.description = "A test description of testPod.description should be logger than summary "
#主頁,直接填項目的git地址就可以了
s.homepage = 'https://github.com/...'
# s.screenshots = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
#開源協(xié)議 需要加對應(yīng)的協(xié)議文件否則驗證是會出現(xiàn)warning
s.license = {:type => "MIT"}
#作者
s.author = { 'zys' => '857785163@qq.com' }
#項目地址,添加項目的git地址,可以在后面添加tag號,commit號或者是否為子模塊等內(nèi)容
s.source = {
:git => 'https://github.com/dulaccc/SDLoginKit.git',
:tag => '1.0.2',
:submodules => true
}
#代碼源文件所在目錄,如果有多個目錄下則用逗號分開
#“*” 表示匹配所有文件
#“*.{h,m}” 表示匹配所有以.h和.m結(jié)尾的文件
# “**” 表示匹配所有子目錄
s.source_files = 'Library/*'
#支持的平臺及版本
s.platform = :ios, '7.0'
s.ios.deployment_target = '8.0'
#資源文件地址
# s.resource = "TestPod/TestPod/Resource/test.plist"
#公開頭文件地址
#s.public_header_files = 'TestPod/*.h'
#所需的framework,多個用逗號隔開
s.frameworks = 'UIKit','JavaScroptCore'
#子模塊可以將模塊中內(nèi)容分開,可以依賴其他子模塊
spec.subspec 'SDKit' do |sdkit|
sdkit.source_files = 'SDKit/**/*.{h,m}'
sdkit.resources = 'SDKit/**/Assets/*.png'
end
#依賴關(guān)系,該項目所依賴的其他庫,如果有多個需要填寫多個s.dependency
# s.dependency 'AFNetworking', '~> 2.3'
#s.dependency 'JSONKit'
end
提交podspec
編輯好后最好先確定 .podspec 是否有有效可以執(zhí)行以下命令判斷
pod spec lint podspec名字
pod lib lint podspec名字
這兩種方法都可以驗證,如果不加podspec名字就直接驗證當前文件夾所有podspec。驗證如果有error是無法提交podspec的
驗證成功后使用以下命令
pod repo push [Repo名] [podspec 文件名字] --use-libraries --allow-warnings
提交 --allow-warnings 可以忽視warning內(nèi)容,--use-libraries 表示使用靜態(tài)庫
命令行問題可以參考官網(wǎng)文檔
常見問題
字符格式不對
s.version = “0.3.0”
^
使用文本編輯使得引號格式不對,需要使用vim進行編輯