iOS cocoapods私有庫上傳到gitee

私有庫的步驟:
1.在gitee創(chuàng)建兩個庫,一個代碼庫SYYBaseLib_Swift,一個spec庫SYYBaseLibSpec_Swift
2.pod lib create SYYBaseLib-Swift創(chuàng)建代碼庫項目
3.修改podspec,
4.驗證podspec
5.提交項目到gitee
6.拉取spec庫:pod repo add SYYBaseLibSpec-Swift https://gitee.com/suyongyaogit/SYYBaseLibSpec-Swift.git
7.推送spec庫:pod repo push SYYBaseLibSpec_Swift SYYBaseLib_Swift.podspec --allow-warnings
8.測試

注意:做私有庫首先需要在gitee或者github上有兩個庫,一個是項目庫,一個是管理版本的索引spec庫,直接創(chuàng)建就行,項目庫公開源,spec庫私有源就行
gitee創(chuàng)建庫.jpg

創(chuàng)建完兩個庫就可以開始以下的工作了。

1.創(chuàng)建項目:pod lib create SYYBaseLib_Swift

這個命令行是創(chuàng)建一個Lib項目,用來上傳到gitee的項目庫的,這句代碼會創(chuàng)建好一個Lib的庫,自動生成好需要的文件。

生成項目后的文件分層.jpg

創(chuàng)建好項目以后,通常我們會先cd到Example里面去pod install一下確保沒問題。
創(chuàng)建好以后打開lib的文件夾(SYYBaseLib_Swift)
Lib文件夾.jpg

SYYBaseLib-Swift文件夾會有Assets和Classes,Assets是存放圖片的,Classes是存放自己寫的類的,Classes已經(jīng)自動生成了一個類,可以直接替換成自己的類就行.

但是這里我們先不替換,現(xiàn)在這個類里面先寫一個方法,等下pod "SYYBaseLib-Swift"后用來調(diào)用一下測試一下,測試通過了我們再替換成自己寫的類再上傳到gitee來

2.修改SYYBaseLib-Swift.podspec文件

Pod::Spec.new do |s|
    s.name             = 'SYYBaseLib_Swift'#項目名
    s.version          = '0.0.1'#版本
    s.swift_versions   = ['5.0']#驗證的時候使用的swift版本
    s.summary          = '一個Swift的基礎(chǔ)框架.'#簡介
    #s.description詳細介紹
    s.description      = <<-DESC
  TODO: 一個Swift的基礎(chǔ)框架,包含一些常用的方法,包含類,擴展,和一些原生代碼的封裝,比如封裝一下WebView,SQLite,和Network等
                         DESC
    s.homepage         = 'https://gitee.com/suyongyaogit/SYYBaseLib_Swift.git'#項目的主頁
    # s.screenshots     = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
    s.license          = {
      :type => 'MIT',
      :file => 'LICENSE'
  }
    #開發(fā)者的賬號和郵箱,如果是gitee的就寫gitee的賬號和郵箱就行
    s.author           = { 'suyongyaogit' => '823895643@qq.com' }
    s.source           = {
      :git => 'https://gitee.com/suyongyaogit/SYYBaseLib_Swift.git',#項目地址,這里一定要對
      :tag => s.version.to_s
  }
  # s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'

  s.ios.deployment_target = '13.0'#最低版本要求

  s.source_files = 'SYYBaseLib_Swift/Classes/**/*.swift'#上傳的文件格式
 #s.source_files = 'SYYBaseLib_Swift/Classes/**/*.{h,m,swift}'#如果文件里有.h,.m.swift,就這樣寫
   #資源目錄
   s.resource_bundles = {
     'SYYBaseLib_Swift' => ['SYYBaseLib_Swift/Assets/Assets.xcassets'],
   }

  # s.public_header_files = 'Pod/Classes/**/*.h'
  # s.frameworks = 'UIKit', 'MapKit'
  s.dependency 'Alamofire', '~> 5.6.4'#依賴庫
  s.dependency 'HandyJSON'
  s.dependency 'SVProgressHUD'
  s.dependency 'ESTabBarController-swift'
  s.dependency 'FMDB'
  s.dependency 'Hue'
  s.dependency 'IQKeyboardManagerSwift', '~> 6.5.0'
  s.dependency 'Kingfisher'
  s.dependency 'MJRefresh'
  s.dependency 'SnapKit'
  s.dependency 'SwiftDate'
  s.dependency 'XHLaunchAd'
end

改完這個文件夾之后會需要驗證一下改的對不對,如果驗證失敗上傳到gitee也沒用(按照上面中文注釋改,一般都會通過),cd到SYYBaseLib-Swift,是Example前面的SYYBaseLib-Swift,執(zhí)行命令:

pod lib lint --allow-warnings --verbose 

如果驗證成功會打印

SYYBaseLib-Swift passed validation.

如果失敗,就執(zhí)行命令行:

pod lib lint --allow-warnings --no-clean 查看失敗的原因,改好重新驗證就行

驗證成功會報這個:SYYBaseLib_Swift passed validation.

驗證成功.jpg

2.提交項目(或者直接用SourceTree提交也行,記得標簽一定要寫自己的版本號)

git status

git add .

git commit -m ‘AkTalkKit 庫上傳’

# 將本地庫與遠程庫進行關(guān)聯(lián)
git remote add origin SYYBaseLib_Swift https://gitee.com/suyongyaogit/SYYBaseLibSpec_Swift.git # 此處為實際git地址

git push origin master

git tag '0.0.1' # 要與實際版本一樣

git push --tags

項目庫的工作基本完成了,輪到spec索引庫
3.拉取索引庫(cd 到cd /Users/suyongyao/SYYBaseLib_Swift)

pod repo add SYYBaseLibSpec_Swift https://gitee.com/suyongyaogit/SYYBaseLibSpec_Swift.git

這句命令后會在/Users/suyongyao/.cocoapods/repos自動生成SYYBaseLibSpec_Swift文件夾用于管理spec
4.推送spec

pod repo push SYYBaseLibSpec_Swift SYYBaseLib_Swift.podspec --allow-warnings

這句命令后會自動在/Users/suyongyao/.cocoapods/repos/SYYBaseLibSpec_Swift生成一個文件夾
推送spec后自動生成.jpg

然后用sourcetree把SYYBaseLibSpec_Swift推送到gitee的spec庫去

5.完成后就可以測試了,在項目中的Podfile文件中:

# 指定所有 Spec 倉庫來源(包括私有和官方)
source 'git@gitee.com:suyongyaogit/SYYBaseLibSpec_Swift.git'  # 私有 Spec 倉庫#這里要注意建立倉庫的時候選擇私有庫還是公開源的問題,公開庫用http格式,私有庫用SSH格式
source 'https://github.com/CocoaPods/Specs.git'                   # 官方倉庫

target 'MyApp' do
  pod 'SYYBaseLib_Swift', '~> 0.0.1'  # 從私有 Spec 倉庫解析依賴
end

到這一步這個庫應(yīng)該是可以使用了,但是用著用著你就會發(fā)現(xiàn)兩個問題:
1.pod install下來的庫里面的文件是沒有分級的,沒有按你自己在本地上分級,而是一股腦的在SYYBaseLib文件下面。
2.自己使用的是swift,而庫里面有用到oc的,應(yīng)該怎么調(diào)用
3.版本管理怎么做?

1.文件分層,看SYYBaseLib_Swift.podspec文件里面source_files,使用s.source_files = 'SYYBaseLib_Swift/Classes/*.{h,swift}'就只會上傳全部文件,而不會分級,要想分級要用下面的方法:

本地文件分層.jpg
s.source_files = 'SYYBaseLib_Swift/Classes/*.{h,swift}'
  s.subspec 'Category' do |ss|
    ss.source_files = 'SYYBaseLib_Swift/Classes/Category/*.{h,m}'
  end
  
  s.subspec 'Macro' do |ss|
    ss.source_files = 'SYYBaseLib_Swift/Classes/Macro/*.swift'
  end

這樣做文件的分層,如果Macro是在Category里面的話,那么關(guān)于Macro的文件管理要包含在Category里,如:

s.source_files = 'SYYBaseLib_Swift/Classes/*.{h,swift}'
  s.subspec 'Category' do |ss|
    ss.source_files = 'SYYBaseLib_Swift/Classes/Category/*.{h,m}'
    ss.subspec 'Macro' do |sss|
      sss.source_files = 'SYYBaseLib_Swift/Classes/Macro/*.swift'
    end
   end

這樣pod下來的文件就會分好層了,如:


pod下來分好層.jpg

2.swift調(diào)用OC

需要使用public_header_files,如:


WeChatefe83d0f1f8c96cffce7778739d44c5f.jpg
s.source_files = 'SYYBaseLib_Swift/Classes/*.{h,swift}'
  s.public_header_files = 'SYYBaseLib_Swift/Classes/SYYBaseLib.h'
  s.subspec 'Category' do |ss|
    ss.source_files = 'SYYBaseLib_Swift/Classes/Category/*.{h,m}'
    ss.public_header_files = 'SYYBaseLib_Swift/Classes/Category/*.h'
  end
  
  s.subspec 'Macro' do |ss|
    ss.source_files = 'SYYBaseLib_Swift/Classes/Macro/*.swift'
  end

我在Classes下面和Category下面都有OC的代碼,那么就要分別在Classes和Category下面使用ss.public_header_files這個屬性

3.版本更新

版本更新的時候把需要修改的東西修改好之后,修改SYYBaseLib_Swift.podspec文件的s.version = '0.0.2'#版本,cd 到Example去pod install一下,保證上傳到gitee的代碼和你修改的一致,然后驗證:pod lib lint --allow-warnings --no-clean或者pod lib lint --allow-warnings --verbose驗證完之后會報驗證成功:SYYBaseLib_Swift passed validation.,然后按上面的上傳到gitee,/Users/suyongyao/.cocoapods/repos/SYYBaseLibSpec_Swift/SYYBaseLib_Swift文件夾里面新增文件夾,名字就是版本號,如:0.0.2,在代碼庫SYYBaseLib_Swift中把SYYBaseLib_Swift.podspec拷貝過來,然后上傳到到gitee,這樣就可以了

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

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

  • 補充: 2023-3-27 強制升級 pod 庫 一、創(chuàng)建私有 Pod 索引庫 ??Pod 索引庫本質(zhì)是所有庫的p...
    麻辣檸檬閱讀 5,424評論 0 23
  • 前言 iOS開發(fā)者,會經(jīng)常使用CocoaPods管理第三方庫。但是,無論是組件化開發(fā)還是需要創(chuàng)建公司內(nèi)部的類庫,我...
    灬小五灬閱讀 1,559評論 0 5
  • 前言 首先跟大家講個故事哈!話說哥們我做iOS開發(fā)5年了,從外包公司干起,到現(xiàn)在的中小企業(yè),基本上都是獨立開發(fā)項目...
    帥聰哥閱讀 3,646評論 2 9
  • CocoaPods庫的種類 創(chuàng)建一個其他人用pod也能夠搜索到的庫。這種庫分為兩種:一種是公有的,所有人都能訪問到...
    蝸牛也有夢想閱讀 835評論 0 1
  • 前言 iOS組件化開發(fā)很重要的一個技術(shù)點:CocoaPods私有庫的搭建。而且最近答應(yīng)一個網(wǎng)友要寫一篇關(guān)于《Coc...
    __Mr_Xie__閱讀 7,731評論 2 27

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