pod 本地倉(cāng)庫(kù)創(chuàng)建以及上架步驟

一、pod 相關(guān)指令

新上架的pod 代碼? 不能search到解決方案

1.更新倉(cāng)庫(kù)? :? pod setup
2.刪除索引 : rm ~/Library/Caches/CocoaPods/search_index.json
3.搜索:pod search‘yourPod’

只更新pod 引用到的代碼

安裝項(xiàng)目中的庫(kù)(不更新倉(cāng)庫(kù)):pod install --verbose --no-repo-update
更新項(xiàng)目中的庫(kù)(不更新倉(cāng)庫(kù)):pod update --verbose --no-repo-update

命令加可選參數(shù)

查看詳情過程(可以查看更多的打印信息): --verbose
允許警告(有警告會(huì)通不過,建議一直帶上):? --allow-warnings



二、創(chuàng)建 pod 本地倉(cāng)庫(kù) pod私有庫(kù)創(chuàng)建)

1 、在本地gitlab? 創(chuàng)建一個(gè)空的代碼倉(cāng)庫(kù) 名稱隨便取 (以下用該URL: git.XXX.com/ios/iOSSpec.git做示例)。?

專門給pod 建立索引的,這個(gè)項(xiàng)目建議只留在遠(yuǎn)程,本地代碼不要上傳到該服務(wù)器

2、將上述創(chuàng)建的倉(cāng)庫(kù)添加到pod 倉(cāng)庫(kù)索引中

打開命令行? 輸入: pod repo add[隨便取個(gè)倉(cāng)庫(kù)名]? git.XXX.com/ios/iOSSpec.git

輸入: pod repo list? 可以查看到除了github倉(cāng)庫(kù)還新增了剛剛[隨便取個(gè)倉(cāng)庫(kù)名]?

3、 最后 可以為‘ git.XXX.com/ios/ 下的代碼倉(cāng)庫(kù)進(jìn)行 pod 上架了 pod 上架步驟)

?pod代碼管理大概流程


pod 大概流程


三、pod 上架步驟

注意:以下pod指令cd 到 .git 的同級(jí)目錄下即項(xiàng)目目錄

1、創(chuàng)建 .podspec文件 并填寫注冊(cè)信息 (參考:podspec 注冊(cè)說明書)

http://guides.cocoapods.org/syntax/podspec.html

?: pod spec create SGIfiniteView

第二次上架時(shí)候如果資源文件沒有發(fā)生改變只需要修改一下版本號(hào)就好了


2、驗(yàn)證 .podspec文件

本地校驗(yàn): pod lib lint xxx.podspec?

遠(yuǎn)程校驗(yàn): pod spec lint xxx.podspec 遠(yuǎn)程校驗(yàn) 要先執(zhí)行 3 步驟

例:pod lib lint SGIfiniteView.podspec

這里驗(yàn)證通不過需要,根據(jù)報(bào)錯(cuò)信息修復(fù)相關(guān)的errores 或者warnings,查看詳情過程(可以查看更多的打印信息)建議加上--verbose 。? 祝你好運(yùn)!


3、將代碼打上tag,并push到遠(yuǎn)程/服務(wù)器代碼倉(cāng)庫(kù)?(如:github.com?

注意:遠(yuǎn)程代碼的tag .podspec文件中version要一至 打tag之前確保所有的git操作都是已提交確保本地代碼與遠(yuǎn)程代碼一致


? ??ps: 使用gittag 相關(guān)命令

????創(chuàng)建tag
????本地:git tag "0.0.1"
????遠(yuǎn)程:git push --tags

????刪除tag
????本地:git?tag?-d“tag version”?
????遠(yuǎn)程:git push origin :refs/tags/? ??


4、提交podspec文件 發(fā)布版本

例:pod trunk push SGIfiniteView.podspec? (第一次提交要注冊(cè)pod賬號(hào))

?ps:注冊(cè)pod賬號(hào)或者切換?
使用以下命令
? ??????pod trunk register your_email_address?your name? --description='xxx? macbook pro'?
????????如 $:?pod trunk register?123456@qq.com?ShangSan?

? ? 然后郵箱會(huì)接收到cocoapod的驗(yàn)證郵件,將郵件中的鏈接打開就OK了

Tips:
如果pod trunk push失敗了需要修改配置或者代碼最好重新定義一個(gè)新的版本和git tag 否則需要?jiǎng)h除git 原來的tag以及遠(yuǎn)程tag? 重新打上tag? 再提交驗(yàn)證


四、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項(xiàng)目的名稱? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?s.name? ? ? ? = "LYTUIKIT"?

?// pod發(fā)布的版本號(hào)? 要與git倉(cāng)庫(kù)的tag保持一致? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? s.version? ? ? = "0.0.3"? ?

// pod項(xiàng)目描述? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? s.summary? ? ? =“pod項(xiàng)目簡(jiǎn)單的摘要”

s.description? = <<-DESC
在這里填寫pod 項(xiàng)目的描述
DESC

// 宣傳主頁(yè)
s.homepage? ? = "http://www.71ant.com"

# ―――? Spec License? 協(xié)議? ――― #

// 默認(rèn)一般都是MIT? 這個(gè)在git倉(cāng)庫(kù) 創(chuàng)建工程時(shí)候 就需要配置成MIT 協(xié)議
s.license? ? ? = "MIT"

# ―――Author Metadata? 作者信息――― #

// 配置作者名字和郵箱
s.author? ? ? ? ? ? = { "ShangenZhang" => "645256685@qq.com" }

# ――― Platform Specifics 支持的平臺(tái) ――― #

//只支持iOS
s.platform? ? = :ios

// 支持iOS 和 OSX 這個(gè)是假的例子 具體上網(wǎng)搜索
#s.platforms = :ios,:osX

# ――― Source Location 地址路徑配置 ――― #

//? 1、’https://github.com/install-b/LYTUIKIT.git’是git倉(cāng)庫(kù)的路徑? 可以為本地gitlab上代碼倉(cāng)庫(kù)地址
//? 2、‘0.0.3’? 此次發(fā)布的版本與之對(duì)應(yīng)的git倉(cāng)庫(kù)的
s.source? ? ? = { :git => "https://github.com/install-b/LYTUIKIT.git",:tag => "0.0.3" }

// 為了避免錯(cuò)誤通常這樣寫
s.source? ? ? = { :git => "https://github.com/install-b/LYTUIKIT.git",:tag => s.version }

# ――― Source Code 源代碼資源――― #

//這個(gè)是要輸出給用戶的所有源文件文件? 這里只有.h和.a文件? eg:.c,.cpp,.m ……
s.source_files? =? "LYTUIKIT/**/*.{h,a}"

//? 這個(gè)是自己打包的.a 放在pod 工程里面引用? 需要用到.a 一定要加這個(gè)
s.vendored_libraries = "LYTUIKIT/**/*.a"

ps: 這里自己打的包名稱一定要以“lib”開頭,且‘lib’后面的名稱不能與自己的pod名稱相同 不分大小寫

//還有自己寫的framework? 包
#s.vendored_framework =“XXX.framework”
#s.vendored_frameworks =“XXX.framework”,“YYY.framework”

// 這個(gè)是需要?jiǎng)e人導(dǎo)入的頭文件引用
s.public_header_files = "LYTUIKIT/**/*.h"
ps:上面寫的全部是相對(duì)路徑? .podspec 文件所在目錄開始算起?
其中‘* 代表所有的意思 *.h 值某個(gè)路徑下的所有 h 文件? 子文件夾下的不算
** 代表 該文件夾以及所有的子文件夾下的所有路徑

# ――― Resources 資源文件配置 ――― #

//一個(gè)bundle
#s.resource =? 'LYTUIKIT/Bundles/LYFileSelector.bundle'

//多個(gè)bundle
s.resources =['LYTUIKIT/Bundles/LYFileSelector.bundle','LYTUIKIT/Bundles/LYTChatProgressHUD.bundle']

# ――― Project Linking 系統(tǒng)動(dòng)態(tài)庫(kù)連接的 ―――― #

// FRAMEWORK引用
s.framework? = "UIKIT"
#s.frameworks? = "UIKIT",“CORE TEXT”

// tbd動(dòng)態(tài)庫(kù)連接
#s.library =“xml2”
s.libraries =“xml2”,“z”,“sqlite3.0”
注意:tbd 動(dòng)態(tài)庫(kù) 只要名稱? lib前綴和后綴.tbd 都要去掉

# ――― Project Settings 項(xiàng)目工程配置――― #

// ARC項(xiàng)目
s.requires_arc = true

// builtSettings
s.xcconfig = {“OTHER_LDFLAGS”=>“$(inherited)-ObjC”,“ENABLE_BITCONDE”? =>“NO”}

# ―――Pod dependency? pod第三方依賴――― #

// 假設(shè)依賴 三個(gè) 其他pod 倉(cāng)庫(kù) 例:
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è)置默認(rèn)的子組件
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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 項(xiàng)目組件化、平臺(tái)化是技術(shù)公司的共同目標(biāo),越來越多的技術(shù)公司推崇使用pod管理第三方庫(kù)以及私有組件,一方面使項(xiàng)目架構(gòu)...
    swu_luo閱讀 22,839評(píng)論 0 39
  • Cocoapods是非常好用的一個(gè)iOS依賴管理工具,使用它可以方便的管理和更新項(xiàng)目中所使用到的第三方庫(kù),以及將自...
    Nash33閱讀 2,183評(píng)論 0 50
  • 一、創(chuàng)建的github倉(cāng)庫(kù)原文地址 1 進(jìn)入Github網(wǎng)站www.github.com登陸自己的賬號(hào)后 2 建立...
    freesan44閱讀 4,114評(píng)論 2 12
  • 網(wǎng)上將自己的項(xiàng)目做成Pod 的文檔很多,但是有些文檔已經(jīng)很老了,不適合新手上手,經(jīng)過這兩天的研究我決定還是自己寫一...
    黃魚兒啦啦啦閱讀 7,325評(píng)論 10 17
  • 焦點(diǎn)網(wǎng)絡(luò)班第一期 鄭州何琴 堅(jiān)持分享第758天 昨天在醫(yī)院去給點(diǎn)點(diǎn)看牙。臨床也有一個(gè)小男孩在看牙,但是他非常地...
    依然化蝶閱讀 137評(píng)論 0 0

友情鏈接更多精彩內(nèi)容