一孤荣、pod 相關(guān)指令
新上架的pod 代碼? 不能search到解決方案
1.更新倉庫? :? pod setup
2.刪除索引 : rm ~/Library/Caches/CocoaPods/search_index.json
3.搜索:pod search‘yourPod’
只更新pod 引用到的代碼
安裝項目中的庫(不更新倉庫):pod install --verbose --no-repo-update
更新項目中的庫(不更新倉庫):pod update --verbose --no-repo-update
命令加可選參數(shù)
查看詳情過程(可以查看更多的打印信息): --verbose
允許警告(有警告會通不過章郁,建議一直帶上):? --allow-warnings
二、創(chuàng)建 pod 本地倉庫 (pod私有庫創(chuàng)建)
1 肮疗、在本地gitlab? 創(chuàng)建一個空的代碼倉庫 名稱隨便取 (以下用該URL: git.XXX.com/ios/iOSSpec.git做示例)额划。?
專門給pod 建立索引的工闺,這個項目建議只留在遠程度苔,本地代碼不要上傳到該服務(wù)器
2效拭、將上述創(chuàng)建的倉庫添加到pod 倉庫索引中
打開命令行? 輸入: pod repo add[隨便取個倉庫名]? git.XXX.com/ios/iOSSpec.git
輸入: pod repo list? 可以查看到除了github倉庫還新增了剛剛[隨便取個倉庫名]?
3暂吉、 最后 可以為‘ git.XXX.com/ios/ ’ 下的代碼倉庫進行 pod 上架了 (pod 上架步驟)
?pod代碼管理大概流程
三、pod 上架步驟
注意:以下pod指令cd 到 .git 的同級目錄下即項目目錄
1缎患、創(chuàng)建 .podspec文件 并填寫注冊信息 (參考:podspec 注冊說明書)
http://guides.cocoapods.org/syntax/podspec.html
?例: pod spec create SGIfiniteView
第二次上架時候如果資源文件沒有發(fā)生改變只需要修改一下版本號就好了
2慕的、驗證 .podspec文件
本地校驗: pod lib lint xxx.podspec?
遠程校驗: pod spec lint xxx.podspec 遠程校驗 要先執(zhí)行 3 步驟
例:pod lib lint SGIfiniteView.podspec
這里驗證通不過需要,根據(jù)報錯信息修復(fù)相關(guān)的errores 或者warnings挤渔,查看詳情過程(可以查看更多的打印信息)建議加上--verbose 肮街。? 祝你好運!
3判导、將代碼打上tag嫉父,并push到遠程/服務(wù)器代碼倉庫?(如:github.com)?
注意:遠程代碼的tag與 .podspec文件中version要一至 打tag之前確保所有的git操作都是已提交確保本地代碼與遠程代碼一致
? ??ps: 使用git的tag 相關(guān)命令
????創(chuàng)建tag
????本地:git tag "0.0.1"
????遠程:git push --tags
????刪除tag
????本地:git?tag?-d“tag version”?
????遠程:git push origin :refs/tags/? ??
4、提交podspec文件 發(fā)布版本
例:pod trunk push SGIfiniteView.podspec? (第一次提交要注冊pod賬號)
?ps:注冊pod賬號或者切換?
使用以下命令
? ??????pod trunk register your_email_address?‘your name’? --description='xxx? macbook pro'?
????????如 $:?pod trunk register?123456@qq.com?“ShangSan”?
? ? 然后郵箱會接收到cocoapod的驗證郵件眼刃,將郵件中的鏈接打開就OK了
Tips:
如果pod trunk push失敗了需要修改配置或者代碼最好重新定義一個新的版本和git tag 否則需要刪除git 原來的tag以及遠程tag? 重新打上tag? 再提交驗證
四绕辖、xxx .podspec 文件詳解
Cocoapods 官網(wǎng)指南: http://guides.cocoapods.org/syntax/podspec.html
Pod::Spec.new do |s|
# ―――? Spec Metadata概述 ———-#
#這里以 LYTUIKIT為例 地址:https://github.com/install-b/LYTUIKIT
?// pod項目的名稱? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?s.name? ? ? ? = "LYTUIKIT"?
?// pod發(fā)布的版本號? 要與git倉庫的tag保持一致? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? s.version? ? ? = "0.0.3"? ?
// pod項目描述? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? s.summary? ? ? =“pod項目簡單的摘要”
s.description? = <<-DESC
在這里填寫pod 項目的描述
DESC// 宣傳主頁
s.homepage? ? = "http://www.71ant.com"# ―――? Spec License? 協(xié)議? ――― #
// 默認一般都是MIT? 這個在git倉庫 創(chuàng)建工程時候 就需要配置成MIT 協(xié)議
s.license? ? ? = "MIT"# ―――Author Metadata? 作者信息――― #
// 配置作者名字和郵箱
s.author? ? ? ? ? ? = { "ShangenZhang" => "645256685@qq.com" }# ――― Platform Specifics 支持的平臺 ――― #
//只支持iOS
s.platform? ? = :ios// 支持iOS 和 OSX 這個是假的例子 具體上網(wǎng)搜索
#s.platforms = :ios,:osX# ――― Source Location 地址路徑配置 ――― #
//? 1、’https://github.com/install-b/LYTUIKIT.git’是git倉庫的路徑? 可以為本地gitlab上代碼倉庫地址
//? 2擂红、‘0.0.3’? 此次發(fā)布的版本與之對應(yīng)的git倉庫的
s.source? ? ? = { :git => "https://github.com/install-b/LYTUIKIT.git",:tag => "0.0.3" }// 為了避免錯誤通常這樣寫
s.source? ? ? = { :git => "https://github.com/install-b/LYTUIKIT.git",:tag => s.version }# ――― Source Code 源代碼資源――― #
//這個是要輸出給用戶的所有源文件文件? 這里只有.h和.a文件? eg:.c,.cpp,.m ……
s.source_files? =? "LYTUIKIT/**/*.{h,a}"//? 這個是自己打包的.a 放在pod 工程里面引用? 需要用到.a 一定要加這個
s.vendored_libraries = "LYTUIKIT/**/*.a"ps: 這里自己打的包名稱一定要以“lib”開頭仪际,且‘lib’后面的名稱不能與自己的pod名稱相同 不分大小寫
//還有自己寫的framework? 包
#s.vendored_framework =“XXX.framework”
#s.vendored_frameworks =“XXX.framework”,“YYY.framework”// 這個是需要別人導入的頭文件引用
s.public_header_files = "LYTUIKIT/**/*.h"
ps:上面寫的全部是相對路徑? 從 .podspec 文件所在目錄開始算起?
其中‘*’ 代表所有的意思 如*.h 值某個路徑下的所有 h 文件? 子文件夾下的不算
‘**’ 代表 該文件夾以及所有的子文件夾下的所有路徑# ――― Resources 資源文件配置 ――― #
//一個bundle
#s.resource =? 'LYTUIKIT/Bundles/LYFileSelector.bundle'//多個bundle
s.resources =['LYTUIKIT/Bundles/LYFileSelector.bundle','LYTUIKIT/Bundles/LYTChatProgressHUD.bundle']# ――― Project Linking 系統(tǒng)動態(tài)庫連接的 ―――― #
// FRAMEWORK引用
s.framework? = "UIKIT"
#s.frameworks? = "UIKIT",“CORE TEXT”// tbd動態(tài)庫連接
#s.library =“xml2”
s.libraries =“xml2”,“z”,“sqlite3.0”
注意:tbd 動態(tài)庫 只要名稱? lib前綴和后綴.tbd 都要去掉# ――― Project Settings 項目工程配置――― #
// ARC項目
s.requires_arc = true// builtSettings
s.xcconfig = {“OTHER_LDFLAGS”=>“$(inherited)-ObjC”,“ENABLE_BITCONDE”? =>“NO”}# ―――Pod dependency? pod第三方依賴――― #
// 假設(shè)依賴 三個 其他pod 倉庫 例:
s.dependency 'AFNetworking','~> 1.0'
s.dependency 'RestKit/CoreData','~> 0.20.0'
s.ios.dependency 'MBProgressHUD','~> 0.5'end
子組件創(chuàng)建
#這里以? LYTSDK為例
參考地址:https://github.com/71sino/LYTSDK// 設(shè)置默認的子組件
s.default_subspec = 'LYTSDK'//? s.subspec //為該組件設(shè)置子組件
//子組件1? “LYTFoundation”為子組件名稱pod下載后子文件名稱? |f|子組件命令縮寫隨便自己
? s.subspec 'LYTFoundation' do |f|
? ? f.framework = "Foundation"
? ? f.source_files = 'FrameworkTest/LYTFoundation/**/*.{h,a}'
? ? f.vendored_libraries = "FrameworkTest/LYTFoundation/*.a"
? ? f.public_header_files = 'FrameworkTest/LYTFoundation/**/*.h'
? end
? s.subspec 'LYTCommonLib' do |com|
? ? com.framework = "Foundation"
? ? com.source_files = 'FrameworkTest/LYTCommonLib/**/*.{h,a}'
? ? com.vendored_libraries = "FrameworkTest/LYTCommonLib/*.a"
? ? com.public_header_files = 'FrameworkTest/LYTCommonLib/**/*.h'
? end
? s.subspec 'LYTSDK' do |sdk|
? ? sdk.frameworks = "UIKit","CoreTelephony","UserNotifications"
? ? sdk.libraries = "z","xml2","sqlite3.0"
? ? sdk.source_files? = "FrameworkTest/LYTSDK/*.h","FrameworkTest/LYTSDK/*.a"
? ? sdk.vendored_libraries = "FrameworkTest/LYTSDK/*.a"
? ? sdk.public_header_files = "FrameworkTest/LYTSDK/*.h"
//設(shè)置子組件依賴關(guān)系
? ? sdk.dependency 'LYMqttSDK/LYTFoundation'
? ? sdk.dependency 'LYMqttSDK/LYTCommonLib'
? end