使用CocoaPods打造 --- 遠(yuǎn)程私有庫(kù)


上一次寫(xiě)了《使用 CocoaPods 打造 --- 第三方庫(kù)》,我們可以通過(guò)該方式發(fā)布像 AFNetWorkingSDWebImage 等的第三方庫(kù),供廣大開(kāi)發(fā)者使用。該類型的庫(kù)是公開(kāi)的,面向大眾的!

如果我們項(xiàng)目需要組件化,但是又不想讓源碼庫(kù)公布與眾,那該怎么辦呢?

辦法總比困難多,今天就帶大家一步步實(shí)現(xiàn)自己的遠(yuǎn)程私有庫(kù)~

遠(yuǎn)程私有庫(kù)原理

先來(lái)看我的神圖:

重復(fù)的內(nèi)容這里就不再闡述了,可以翻閱我的上篇文章 -> 戳這里。

原理分析:
  • 當(dāng)我們執(zhí)行 $ pod repo add 索引庫(kù)名 索引庫(kù)地址 指令之后,會(huì)將我們的遠(yuǎn)程私有索引庫(kù)克隆到本地;
  • 圖中紫色線路是我們上傳 .podspec索引文件的正確路徑。當(dāng)我們執(zhí)行 $ pod repo push 索引庫(kù)名 .podsepc文件 指令時(shí),pod會(huì)將我們的 .podsepc文件保存在本地索引庫(kù)中,然后自動(dòng)幫我們把該.podsepc文件推送到我們的遠(yuǎn)程私有索引庫(kù)中。

打造遠(yuǎn)程私有庫(kù):

(1):新建遠(yuǎn)程私有源碼倉(cāng)庫(kù)和私有索引庫(kù)。

a). 創(chuàng)建遠(yuǎn)程私有源碼庫(kù)。
倉(cāng)庫(kù)一定要是私有的,這里可以使用公司內(nèi)網(wǎng)的Git、GitHub私有庫(kù)(收費(fèi))、coding等代碼托管平臺(tái)。
此處我使用的是coding。

該倉(cāng)庫(kù)用來(lái)存放我們的源碼

b). 創(chuàng)建遠(yuǎn)程私有索引庫(kù)。
該倉(cāng)庫(kù)用來(lái)存放我們的.podSpec文件

(2):將遠(yuǎn)程私有索引庫(kù)克隆到我們本地。

克隆遠(yuǎn)程私有索引庫(kù)到本地:

// QYSpec :遠(yuǎn)程索引倉(cāng)庫(kù)名稱
// https://git.coding.net... 遠(yuǎn)程索引倉(cāng)庫(kù)地址
$ pod repo add QYSpec https://git.coding.net/Joeyoung_/QYSpec.git

此時(shí),我們的 CocoaPods本地索引庫(kù)就會(huì)多出一個(gè)我們剛才添加的倉(cāng)庫(kù)。

(3):使用 CocoaPods自動(dòng)創(chuàng)建模板庫(kù)存放我們的源碼。

自動(dòng)創(chuàng)建模板庫(kù)可以 -> 戳這里查看。此處不是本文重點(diǎn),不再闡述。
a). 創(chuàng)建模板庫(kù):

$ pod lib create QYBaseComponent 

創(chuàng)建過(guò)程中的一些配置可以根據(jù)自己需要更改,我的如下:


b). 將我們的私有庫(kù)源碼放在 Classes 文件夾下:
此處我的源碼使用的是項(xiàng)目中的一些分類,只是為了演示使用。

c). 根據(jù)我們上面創(chuàng)建的遠(yuǎn)程私有源碼庫(kù),修改我們的 .podSpec文件。

#
# Be sure to run `pod lib lint QYBaseComponent.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             = 'QYBaseComponent'
  s.version          = '0.1.0'
  s.summary          = '基礎(chǔ)組件'

# 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      = "描述部分一定要比摘要部分長(zhǎng)長(zhǎng)長(zhǎng)長(zhǎng)。。。。"

  s.homepage         = 'https://coding.net/u/Joeyoung_/p/QYBaseComponent'
  # s.screenshots     = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
  s.license          = { :type => 'MIT', :file => 'LICENSE' }
  s.author           = { '你的姓名' => '你的郵箱' }
  s.source           = { :git => 'https://git.coding.net/Joeyoung_/QYBaseComponent.git', :tag => s.version.to_s }
  # s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'

  s.ios.deployment_target = '8.0'

  s.source_files = 'QYBaseComponent/Classes/**/*'
  
  # s.resource_bundles = {
  #   'QYBaseComponent' => ['QYBaseComponent/Assets/*.png']
  # }

  # s.public_header_files = 'Pod/Classes/**/*.h'
  # s.frameworks = 'UIKit', 'MapKit'
  # s.dependency 'AFNetworking', '~> 2.3'
end

d). 使用Git上傳我們的代碼到遠(yuǎn)程私有源碼庫(kù)。
(此處一定要記得打上 tag,否則后面的工作無(wú)法進(jìn)行。)

(4):文件校驗(yàn)。

a). 先本地校驗(yàn) .podspec 文件。

$ pod lib lint 

此處表明本地驗(yàn)證通過(guò)

b). 遠(yuǎn)程校驗(yàn) .podspec 文件。

$ pod spec lint 
此處表明本地驗(yàn)證通過(guò)

(5):上傳 .podSpec文件。

上傳.podSpec文件。

// QYSpec :遠(yuǎn)程索引倉(cāng)庫(kù)庫(kù)的名稱
// QYBaseComponent.podspec : 我們的.podSpec文件
$ pod repo push QYSpec QYBaseComponent.podspec

此時(shí)已經(jīng)上傳成功了

上面的指令會(huì)先把 .podspec文件添加到我們本地的索引庫(kù)當(dāng)中。

然后自動(dòng)幫我們推送到了遠(yuǎn)端私有索引倉(cāng)庫(kù)。

此時(shí)我們的遠(yuǎn)程私有庫(kù)就創(chuàng)建完成了。

安裝私有庫(kù)到項(xiàng)目中:

a). 搜索我們的私有庫(kù):

$ pod search QYBaseComponent


b). 將私有庫(kù)復(fù)制到我們的Podfile文件中:

platform :ios, '8.0'
target 'TestDemo' do
   use_frameworks!
   pod 'QYBaseComponent', '~> 0.1.0'
end

c). 安裝我們的Podfile

$ pod install 


此時(shí)報(bào)錯(cuò)了,未能找到我們的 QYBaseComponent 私有庫(kù)。

解決方法:

  • 添加我們遠(yuǎn)程私有索引庫(kù)的URL到 Podfile 文件中;
  • 添加 CocoaPods 官方索引庫(kù)的URL到 Podfile 文件中。(如果不添加,則所有資源會(huì)去我們的遠(yuǎn)程私有索引庫(kù)中找,導(dǎo)致那些放在官方索引庫(kù)中的資源會(huì)找不到。)
// 查詢我們本地索引庫(kù)信息
$ pod repo 


將我們需要的索引庫(kù)URL復(fù)制到 Podfile 文件中:

# master
source 'https://github.com/CocoaPods/Specs.git'
# QYSpec
source 'https://git.coding.net/Joeyoung_/QYSpec.git'

platform :ios, '8.0'

target 'TestDemo' do
   use_frameworks!
   pod 'QYBaseComponent', '~> 0.1.0'
end

從新執(zhí)行 pod install 命令:


此時(shí)已經(jīng)安裝成功了。

d). 通過(guò) .xcworkspace 打開(kāi)工程。


看到我們的私有庫(kù)已經(jīng)成功安裝到項(xiàng)目中了,just do it ~

千里之行,始于足下。

最后編輯于
?著作權(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)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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