(轉(zhuǎn))使用Cocoapods創(chuàng)建私有podspec

轉(zhuǎn)自wtlucky的博客

Cocoapods是非常好用的一個(gè)iOS依賴管理工具,使用它可以方便的管理和更新項(xiàng)目中所使用到的第三方庫(kù),以及將自己的項(xiàng)目中的公共組件交由它去管理。Cocoapods的介紹及優(yōu)點(diǎn)本文就不在贅述,我開(kāi)始使用Cocoapods還是在兩年前,那個(gè)時(shí)候它剛剛出現(xiàn),網(wǎng)上的資料還非常的少,就連他們自己的HomePage都十分的簡(jiǎn)單,我就著手嘗試著使用了一下,用它管理起第三方庫(kù)確實(shí)是十分的方便順手。后來(lái)它有了更強(qiáng)大的功能就是自己創(chuàng)建podspec,更可以設(shè)置私有的庫(kù)。
春節(jié)回來(lái)上班,沒(méi)有什么任務(wù)做,正好項(xiàng)目中有一些公共組件需要從龐大的項(xiàng)目體系中剝離出來(lái),而且年前項(xiàng)目終于從SVN遷移到了Git,真是喜大普奔,大快人心!這樣項(xiàng)目使用Cocoapods就有了條件,正好趁著這兩天沒(méi)有什么事情做,學(xué)習(xí)一下創(chuàng)建私有的podspec并在項(xiàng)目中部署使用,以及pods的subspec的創(chuàng)建及使用。
整體先說(shuō)明一下創(chuàng)建一個(gè)私有的podspec包括如下那么幾個(gè)步驟:

  1. 創(chuàng)建并設(shè)置一個(gè)私有的Spec Repo。

  2. 創(chuàng)建Pod的所需要的項(xiàng)目工程文件,并且有可訪問(wèn)的項(xiàng)目版本控制地址。

  3. 創(chuàng)建Pod所對(duì)應(yīng)的podspec文件。

  4. 本地測(cè)試配置好的podspec文件是否可用。

  5. 向私有的Spec Repo中提交podspec。

  6. 在個(gè)人項(xiàng)目中的Podfile中增加剛剛制作的好的Pod并使用。

7.更新維護(hù)podspec。

在這一系列的步驟中需要?jiǎng)?chuàng)建兩個(gè)Git倉(cāng)庫(kù),分別是第一步和第二步(第二步不一定非要是Git倉(cāng)庫(kù),只要是可以獲取到相關(guān)代碼文件就可以,也可以是SVN的,也可以說(shuō)zip包,區(qū)別就是在podspec中的source項(xiàng)填寫(xiě)的內(nèi)容不同),并且第一步只是在初次創(chuàng)建私有podspec時(shí)才需要,之后在創(chuàng)建其他的只需要從第二步開(kāi)始就可以。本文只介紹在Git環(huán)境下的操作,其他環(huán)境其他方式暫不說(shuō)明。


創(chuàng)建私有Spec Repo
先來(lái)說(shuō)第一步,什么是Spec Repo?它是所有的Pods的一個(gè)索引,就是一個(gè)容器,所有公開(kāi)的Pods都在這個(gè)里面,它實(shí)際是一個(gè)Git倉(cāng)庫(kù)remote端在GitHub上,但是當(dāng)你使用了Cocoapods后它會(huì)被clone到本地的~/.cocoapods/repos目錄下,可以進(jìn)入到這個(gè)目錄看到master文件夾就是這個(gè)官方的Spec Repo了。這個(gè)master目錄的結(jié)構(gòu)是這個(gè)樣子的

├── Specs

    
└── [SPEC_NAME]

        
└── [VERSION]

            
└── [SPEC_NAME].podspec

因此我們需要?jiǎng)?chuàng)建一個(gè)類似于master的私有Spec Repo,這里我們可以fork官方的Repo,也可以自己創(chuàng)建,個(gè)人建議不fork,因?yàn)槟阒皇窍胩砑幼约旱腜ods,沒(méi)有必要把現(xiàn)有的公開(kāi)Pods都copy一份。所以創(chuàng)建一個(gè) Git倉(cāng)庫(kù),這個(gè)倉(cāng)庫(kù)你可以創(chuàng)建私有的也可以創(chuàng)建公開(kāi)的,不過(guò)既然私有的Spec Repo,還是創(chuàng)建私有的倉(cāng)庫(kù)吧,需要注意的就是如果項(xiàng)目中有其他同事共同開(kāi)發(fā)的話,你還要給他這個(gè)Git倉(cāng)庫(kù)的權(quán)限。因?yàn)镚itHub的私有倉(cāng)庫(kù)是收費(fèi)的,我還不是GitHub的付費(fèi)用戶,所以我使用了其他Git服務(wù),我使用的是CODING,當(dāng)然還有其他的可供選擇開(kāi)源中國(guó)、Bitbucket以及CSDN Code.
創(chuàng)建完成之后在Terminal中執(zhí)行如下命令

# pod repo add [Private Repo Name] [GitHub HTTPS clone URL]

$ pod repo add WTSpecs https://coding.net/wtlucky/WTSpecs.git

此時(shí)如果成功的話進(jìn)入到~/.cocoapods/repos目錄下就可以看到WTSpecs這個(gè)目錄了。至此第一步創(chuàng)建私有Spec Repo完成。
PS:如果有其他合作人員共同使用這個(gè)私有Spec Repo的話在他有對(duì)應(yīng)Git倉(cāng)庫(kù)的權(quán)限的前提下執(zhí)行相同的命令添加這個(gè)Spec Repo即可。

創(chuàng)建Pod項(xiàng)目工程文件
這個(gè)第二步?jīng)]有什么好介紹的,如果是有現(xiàn)有的組件項(xiàng)目,并且在Git的版本管理下,那么這一步就算完成了,可以直接進(jìn)行下一步了。
如果你的組件還在你冗余龐大的項(xiàng)目中,需要拆分出來(lái)或者需要自己從零開(kāi)始創(chuàng)建一個(gè)組件庫(kù),那么我建議你使用Cocoapods提供的一個(gè)工具將第二步與第三步結(jié)合起來(lái)做。
現(xiàn)在來(lái)說(shuō)一下這個(gè)工具,相關(guān)的文檔介紹是Using Pod Lib Create 就拿我創(chuàng)建的podTestLibrary為例子具體講一下這里是如何操作的,先cd到要?jiǎng)?chuàng)建項(xiàng)目的目錄然后執(zhí)行

$ pod lib create podTestLibrary

之后他會(huì)問(wèn)你四個(gè)問(wèn)題,1.是否需要一個(gè)例子工程;2.選擇一個(gè)測(cè)試框架;3.是否基于View測(cè)試;4.類的前綴;4個(gè)問(wèn)題的具體介紹可以去看官方文檔,我這里選擇的是1.yes;2.Specta/Expecta;3.yes;4.PTL。 問(wèn)完這4個(gè)問(wèn)題他會(huì)自動(dòng)執(zhí)行pod install命令創(chuàng)建項(xiàng)目并生成依賴。

$ tree PodTestLibrary -L 2

PodTestLibrary

├── Example                                  
#demo APP

│   ├── PodTestLibrary

│   ├── PodTestLibrary.xcodeproj

│   ├── PodTestLibrary.xcworkspace

│   ├── Podfile                              
#demo APP 的依賴描述文件

│   ├── Podfile.lock

│   ├── Pods                                  
#demo APP 的依賴文件

│   └── Tests

├── LICENSE                               
#開(kāi)源協(xié)議 默認(rèn)MIT

├── Pod                                       
#組件的目錄

│   ├── Assets                            
#資源文件

│   └── Classes                              
#類文件

├── PodTestLibrary.podspec           
#第三步要?jiǎng)?chuàng)建的podspec文件

└── README.md                                
#markdown格式的README

 
9 directories, 5 files

以上是項(xiàng)目生成的目錄結(jié)構(gòu)及相關(guān)介紹。

接下來(lái)就是向Pod文件夾中添加庫(kù)文件和資源,并配置podspec文件,我把一個(gè)網(wǎng)絡(luò)模塊的共有組件放入Pod/Classes中,然后進(jìn)入Example文件夾執(zhí)行pod update命令,再打開(kāi)項(xiàng)目工程可以看到,剛剛添加的組件已經(jīng)在Pods子工程下Development Pods/PodTestLibrary中了,然后編輯demo工程,測(cè)試組件,我并沒(méi)有使用提供的測(cè)試框架進(jìn)行測(cè)試,這里就先不介紹了。
注:這里需要注意的是每當(dāng)你向Pod中添加了新的文件或者以后更新了podspec的版本都需要重新執(zhí)行一遍pod update命令。
測(cè)試無(wú)誤后需要將該項(xiàng)目添加并推送到遠(yuǎn)端倉(cāng)庫(kù),并編輯podspec文件。
通過(guò)Cocoapods創(chuàng)建出來(lái)的目錄本身就在本地的Git管理下,我們需要做的就是給它添加遠(yuǎn)端倉(cāng)庫(kù),同樣去GitHub或其他的Git服務(wù)提供商那里創(chuàng)建一個(gè)私有的倉(cāng)庫(kù),拿到SSH地址,然后cd到PodTestLibrary目錄

$ git add .

$ git commit -s -m 
"Initial Commit of Library"

$ git remote add origin git@coding.net:wtlucky/podTestLibrary.git           
#添加遠(yuǎn)端倉(cāng)庫(kù)

$ git push origin master     
#提交到遠(yuǎn)端倉(cāng)庫(kù)

因?yàn)閜odspec文件中獲取Git版本控制的項(xiàng)目還需要tag號(hào),所以我們要打上一個(gè)tag,

$ git tag -m 
"first release"
 "0.1.0"

$ git push --tags     
#推送tag到遠(yuǎn)端倉(cāng)庫(kù)

做完這些就可以開(kāi)始編輯podspec文件了,它是一個(gè)Ruby的文件,把編輯器的格式改成Ruby就能看到語(yǔ)法高亮,下面我貼上我的podspec文件,并在后面以注釋的形式說(shuō)明每個(gè)字段的含義,沒(méi)有涉及到的字段可以去官方文檔查閱

Pod::Spec.
new
 do
 |s|

  
s.name             = 
"PodTestLibrary"
    #名稱

  
s.version          = 
"0.1.0"
             #版本號(hào)

  
s.summary          = 
"Just Testing."
     #簡(jiǎn)短介紹,下面是詳細(xì)介紹

  
s.description      = <<-DESC

                       
Testing Private Podspec.

 
                       
* Markdown format.

                       
* Don't worry about the indent, we strip it!

                       
DESC

  
s.homepage         = 
"[https://coding.net/u/wtlucky/p/podTestLibrary](https://coding.net/u/wtlucky/p/podTestLibrary)"
                           #主頁(yè),這里要填寫(xiě)可以訪問(wèn)到的地址,不然驗(yàn)證不通過(guò)

  
# s.screenshots     = "www.example.com/screenshots_1", "www.example.com/screenshots_2"           #截圖

  
s.license          = 
'MIT'
              #開(kāi)源協(xié)議

  
s.author           = { 
"wtlucky"
 => 
"wtlucky@foxmail.com"
 }                   
#作者信息

  
s.source           = { :git => 
"[https://coding.net/wtlucky/podTestLibrary.git](https://coding.net/wtlucky/podTestLibrary.git)"
, :tag => 
"0.1.0"
 }      
#項(xiàng)目地址,這里不支持ssh的地址,驗(yàn)證不通過(guò),只支持HTTP和HTTPS,最好使用HTTPS

  
# s.social_media_url = '[https://twitter.com/](https://twitter.com/)<twitter_username>'                       #多媒體介紹地址

 
  
s.platform     = :ios, 
'7.0'
            #支持的平臺(tái)及版本

  
s.requires_arc = 
true
                   #是否使用ARC,如果指定具體文件,則具體的問(wèn)題使用ARC

 
  
s.source_files = 
'Pod/Classes/**/*'
     #代碼源文件地址,**/*表示Classes目錄及其子目錄下所有文件,如果有多個(gè)目錄下則用逗號(hào)分開(kāi),如果需要在項(xiàng)目中分組顯示,這里也要做相應(yīng)的設(shè)置

  
s.resource_bundles = {

    
'PodTestLibrary'
 => [
'Pod/Assets/*.png'
]

  
}                                       
#資源文件地址

 
  
s.public_header_files = 
'Pod/Classes/**/*.h'
   #公開(kāi)頭文件地址

  
s.frameworks = 
'UIKit'
                  #所需的framework,多個(gè)用逗號(hào)隔開(kāi)

  
s.dependency 
'AFNetworking'
, 
'~> 2.3'
   #依賴關(guān)系,該項(xiàng)目所依賴的其他庫(kù),如果有多個(gè)需要填寫(xiě)多個(gè)s.dependency

end</twitter_username>

編輯完podspec文件后,需要驗(yàn)證一下這個(gè)文件是否可用,如果有任何WARNING或者ERROR都是不可以的,它就不能被添加到Spec Repo中,不過(guò)xcode的WARNING是可以存在的,驗(yàn)證需要執(zhí)行一下命令

$ pod lib lint

當(dāng)你看到

-> PodTestLibrary (0.1.0)

 
PodTestLibrary passed validation.

時(shí),說(shuō)明驗(yàn)證通過(guò)了,不過(guò)這只是這個(gè)podspec文件是合格的,不一定說(shuō)明這個(gè)Pod是可以用的,我們需要在本地做一下驗(yàn)證,這就是第四步的內(nèi)容了,第四步在具體說(shuō)明。

創(chuàng)建podspec文件
如果從第二步過(guò)來(lái),已經(jīng)有了現(xiàn)成的項(xiàng)目,那么就需要給這個(gè)項(xiàng)目創(chuàng)建一個(gè)podspec文件,創(chuàng)建它需要執(zhí)行Cocoapods的另外一個(gè)命令,官方文檔在這里

$ pod spec create PodTestLibrary git@coding.net:wtlucky/podTestLibrary.git

執(zhí)行完之后,就創(chuàng)建了一個(gè)podspec文件,他其中會(huì)包含很多內(nèi)容,可以按照我之前介紹的進(jìn)行編輯,沒(méi)用的刪掉。編輯完成之后使用驗(yàn)證命令驗(yàn)證一下

$ pod lib lint

驗(yàn)證無(wú)誤就可以進(jìn)入下一步了。
本地測(cè)試podspec文件
我們可以創(chuàng)建一個(gè)新的項(xiàng)目,在這個(gè)項(xiàng)目的Podfile文件中直接指定剛才創(chuàng)建編輯好的podspec文件,看是否可用。 在Podfile中我們可以這樣編輯,有兩種方式

platform :ios, 
'7.0'

 
pod 
'PodTestLibrary'
, :path => 
'~/code/Cocoapods/podTest/PodTestLibrary'
      #指定路徑

pod 
'PodTestLibrary'
, :podspec => 
'~/code/Cocoapods/podTest/PodTestLibrary/PodTestLibrary.podspec'
  #指定podspec文件

然后執(zhí)行pod install命令安裝依賴,打開(kāi)項(xiàng)目工程,可以看到庫(kù)文件都被加載到Pods子項(xiàng)目中了,不過(guò)它們并沒(méi)有在Pods目錄下,而是跟測(cè)試項(xiàng)目一樣存在于Development Pods/PodTestLibrary中,這是因?yàn)槲覀兪窃诒镜販y(cè)試,而沒(méi)有把podspec文件添加到Spec Repo中的緣故。
在項(xiàng)目中編寫(xiě)代碼,測(cè)試庫(kù)文件無(wú)誤后就可以開(kāi)始下一步了,提交podspec到Spec Repo中。

向Spec Repo提交podspec
向Spec Repo提交podspec需要完成兩點(diǎn)一個(gè)是podspec必須通過(guò)驗(yàn)證無(wú)誤,在一個(gè)就是刪掉無(wú)用的注釋(這個(gè)不是必須的,為了規(guī)范還是刪掉吧)。 向我們的私有Spec Repo提交podspec只需要一個(gè)命令

$ pod repo push WTSpecs PodTestLibrary.podspec  
#前面是本地Repo名字 后面是podspec名字

完成之后這個(gè)組件庫(kù)就添加到我們的私有Spec Repo中了,可以進(jìn)入到~/.cocoapods/repos/WTSpecs目錄下查看

.

├── LICENSE

├── PodTestLibrary

│   └── 0.1.0

│       └── PodTestLibrary.podspec

└── README.md

再去看我們的Spec Repo遠(yuǎn)端倉(cāng)庫(kù),也有了一次提交,這個(gè)podspec也已經(jīng)被Push上去了。
至此,我們的這個(gè)組件庫(kù)就已經(jīng)制作添加完成了,使用pod search命令就可以查到我們自己的庫(kù)了

$ pod search PodTestLibrary

 
-> PodTestLibrary (0.1.0)

   
Just Testing.

   
pod 
'PodTestLibrary'
, 
'~> 0.1.0'

   
- Homepage: https:
//coding.net/u/wtlucky/p/podTestLibrary

   
- Source:   https:
//coding.net/wtlucky/podTestLibrary.git

   
- Versions: 0.1.0 [WTSpecs repo]

這里說(shuō)的是添加到私有的Repo,如果要添加到Cocoapods的官方庫(kù)了,可以使用trunk工具,具體可以查看官方文檔。

使用制作好的Pod
在完成這一系列步驟之后,我們就可以在正式項(xiàng)目中使用這個(gè)私有的Pod了只需要在項(xiàng)目的Podfile里增加以下一行代碼即可

$ pod 
'PodTestLibrary'
, 
'~> 0.1.0'

然后執(zhí)行pod update,更新庫(kù)依賴,然后打卡項(xiàng)目可以看到,我們自己的庫(kù)文件已經(jīng)出現(xiàn)在Pods子項(xiàng)目中的Pods子目錄下了,而不再是Development Pods。

更新維護(hù)podspec
最后再來(lái)說(shuō)一下制作好的podspec文件后續(xù)的更新維護(hù)工作,比如如何添加新的版本,如何刪除Pod。
我已經(jīng)制作好了PodTestLibrary的0.1.0版本,現(xiàn)在我對(duì)他進(jìn)行升級(jí)工作,這次我添加了更多的模塊到PodTestLibrary之中,包括工具類,底層Model及UIKit擴(kuò)展等,這里又嘗試了一下subspec功能,給PodTestLibrary創(chuàng)建了多個(gè)子分支。
具體做法是先將源文件添加到Pod/Classes中,然后按照不同的模塊對(duì)文件目錄進(jìn)行整理,因?yàn)槲矣兴膫€(gè)模塊,所以在Pod/Classes下有創(chuàng)建了四個(gè)子目錄,完成之后繼續(xù)編輯之前的PodTestLibrary.podspec,這次增加了subspec特性

Pod::Spec.
new
 do
 |s|

  
s.name             = 
"PodTestLibrary"

  
s.version          = 
"1.0.0"

  
s.summary          = 
"Just Testing."

  
s.description      = <<-DESC

                       
Testing Private Podspec.

 
                       
* Markdown format.

                       
* Don't worry about the indent, we strip it!

                       
DESC

  
s.homepage         = 
"[https://coding.net/u/wtlucky/p/podTestLibrary](https://coding.net/u/wtlucky/p/podTestLibrary)"

  
# s.screenshots     = "www.example.com/screenshots_1", "www.example.com/screenshots_2"

  
s.license          = 
'MIT'

  
s.author           = { 
"wtlucky"
 => 
"wtlucky@foxmail.com"
 }

  
s.source           = { :git => 
"[https://coding.net/wtlucky/podTestLibrary.git](https://coding.net/wtlucky/podTestLibrary.git)"
, :tag => 
"1.0.0"
 }

  
# s.social_media_url = '[https://twitter.com/](https://twitter.com/)<twitter_username>'

 
  
s.platform     = :ios, 
'7.0'

  
s.requires_arc = 
true

 
  
#s.source_files = 'Pod/Classes/**/*'

  
#s.resource_bundles = {

  
#  'PodTestLibrary' => ['Pod/Assets/*.png']

  
#}

  
#s.public_header_files = 'Pod/Classes/**/*.h'

 
  
s.subspec 
'NetWorkEngine'
 do
 |networkEngine|

      
networkEngine.source_files = 
'Pod/Classes/NetworkEngine/**/*'

      
networkEngine.public_header_files = 
'Pod/Classes/NetworkEngine/**/*.h'

      
networkEngine.dependency 
'AFNetworking'
, 
'~> 2.3'

  
end

 
  
s.subspec 
'DataModel'
 do
 |dataModel|

      
dataModel.source_files = 
'Pod/Classes/DataModel/**/*'

      
dataModel.public_header_files = 
'Pod/Classes/DataModel/**/*.h'

  
end

 
  
s.subspec 
'CommonTools'
 do
 |commonTools|

      
commonTools.source_files = 
'Pod/Classes/CommonTools/**/*'

      
commonTools.public_header_files = 
'Pod/Classes/CommonTools/**/*.h'

      
commonTools.dependency 
'OpenUDID'
, 
'~> 1.0.0'

  
end

 
  
s.subspec 
'UIKitAddition'
 do
 |ui|

      
ui.source_files = 
'Pod/Classes/UIKitAddition/**/*'

      
ui.public_header_files = 
'Pod/Classes/UIKitAddition/**/*.h'

      
ui.resource = 
"Pod/Assets/MLSUIKitResource.bundle"

      
ui.dependency 
'PodTestLibrary/CommonTools'

  
end

 
  
s.frameworks = 
'UIKit'

  
#s.dependency 'AFNetworking', '~> 2.3'

  
#s.dependency 'OpenUDID', '~> 1.0.0'

end</twitter_username>

因?yàn)槲覀儎?chuàng)建了subspec所以項(xiàng)目整體的依賴dependency,源文件source_files,頭文件public_header_files,資源文件resource等都移動(dòng)到了各自的subspec中,每個(gè)subspec之間也可以有相互的依賴關(guān)系,比如UIKitAddition就依賴于CommonTools。
編輯完成之后,在測(cè)試項(xiàng)目里pod update一下,幾個(gè)子項(xiàng)目都被加進(jìn)項(xiàng)目工程了,寫(xiě)代碼驗(yàn)證無(wú)誤之后,就可以將這個(gè)工程push到遠(yuǎn)端倉(cāng)庫(kù),并打上新的tag->1.0.0。
最后再次使用pod lib lint驗(yàn)證編輯好的podsepc文件,沒(méi)有自身的WARNING或者ERROR之后,就可以再次提交到Spec Repo中了,命令跟之前是一樣的

$ pod repo push WTSpecs PodTestLibrary.podspec

之后再次到~/.cocoapods/repos/WTSpecs目錄下查看

.

├── LICENSE

├── PodTestLibrary

│   ├── 0.1.0

│   │   └── PodTestLibrary.podspec

│   └── 1.0.0

│       └── PodTestLibrary.podspec

└── README.md

 
3 directories, 4 files

已經(jīng)有兩個(gè)版本了,使用pod search查找得到的結(jié)果為

$ pod search PodTestLibrary

 
-> PodTestLibrary (1.0.0)

   
Just Testing.

   
pod 
'PodTestLibrary'
, 
'~> 1.0.0'

   
- Homepage: https:
//coding.net/u/wtlucky/p/podTestLibrary

   
- Source:   https:
//coding.net/wtlucky/podTestLibrary.git

   
- Versions: 1.0.0, 0.1.0 [WTSpecs repo]

   
- Sub specs:

     
- PodTestLibrary/NetWorkEngine (1.0.0)

     
- PodTestLibrary/DataModel (1.0.0)

     
- PodTestLibrary/CommonTools (1.0.0)

     
- PodTestLibrary/UIKitAddition (1.0.0)

完成這些之后,在實(shí)際項(xiàng)目中我們就可以選擇使用整個(gè)組件庫(kù)或者是組件庫(kù)的某一個(gè)部分了,對(duì)應(yīng)的Podfile中添加的內(nèi)容為

platform :ios, 
'7.0'

 
pod 
'PodTestLibrary/NetWorkEngine'
, 
'1.0.0'
  #使用某一個(gè)部分

pod 
'PodTestLibrary/UIKitAddition'
, 
'1.0.0'

 
pod 
'PodTestLibrary'
, 
'1.0.0'
   #使用整個(gè)庫(kù)

最后介紹一下如何刪除一個(gè)私有Spec Repo,只需要執(zhí)行一條命令即可

$ pod repo remove WTSpecs

這樣這個(gè)Spec Repo就在本地刪除了,我們還可以通過(guò)

$ pod repo add WTSpecs git@coding.net:wtlucky/WTSpecs.git

再把它給加回來(lái)。
如果我們要?jiǎng)h除私有Spec Repo下的某一個(gè)podspec怎么操作呢,此時(shí)無(wú)需借助Cocoapods,只需要cd到~/.cocoapods/repos/WTSpecs目錄下,刪掉庫(kù)目錄

wtlucky@wtluckydeMacBook-Pro:~/.cocoapods/repos/WTSpecs$ rm -Rf PodTestLibrary

然后在將Git的變動(dòng)push到遠(yuǎn)端倉(cāng)庫(kù)即可

wtlucky@wtluckydeMacBook-Pro:~/.cocoapods/repos/WTSpecs$ git add --all .

wtlucky@wtluckydeMacBook-Pro:~/.cocoapods/repos/WTSpecs$ git ci -m 
"remove unuseful pods"

wtlucky@wtluckydeMacBook-Pro:~/.cocoapods/repos/WTSpecs$ git push origin master

參考資料
Private Pods
Creating a Private CocoaPod
Developing Private In-House Libraries with CocoaPods
(本文作者:wtlucky)

最后編輯于
?著作權(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)容