創建私有 CocoaPods 倉庫

oldv8739 8年前發布 | 24K 次閱讀 CocoaPods Git iOS開發 移動開發

iOS 開發中我們經常用 CocoaPods 來安裝第三方庫,CocoaPods 可以幫助我們處理依賴,管理版本等等,還是挺方便的,如果我們公司內部有一個比較獨立的組件,不相開源但是又想用 CocoaPods 來管理,可不可以呢?當然是可以的,CocoaPods 也提供了比較好的支持,可以自定義源,這樣只要我們把 Pods 源和組件的源代碼的權限放到私有的空間里,其他和公開倉庫的作法是類似的。下面就簡單說一下怎么創建私有的 CocoaPods 倉庫。

下文中的 CocoaPods 使用的是 1.0.0 版本

創建樣板工程

CocoaPods 提供了工具可以創建一個樣板工程,在終端中 cd 到一個方便操作的目錄,運行如下命令:

$ pod libcreateCPYPrivatePodsDemo

CPYPrivatePodsDemo 根據自己的需要替換,這個就是組件的名字了。

CoccoaPods 會問幾個問題

  1. 要使用的語言
  2. 是否需要樣例工程
  3. 是否需要一個測試框架
  4. 是否需要基于 View 的測試
  5. 還有類的前綴

我們這里不對這些選項做深入的探討,我們只需要一個 Example demo 工程,前綴必選的,其他選 No

完成后在當前目錄會出現一個 CPYPrivatePodsDemo 目錄,cd 到這個目錄中,我們可以看到如下文件

這樣我們就得到一個樣板工程,完成創建后 CocoaPods 會打開樣例工程的 .xcworkspace 文件。

把組件相關的類放到工程中

把組件相關的類放到 CPYPrivatePodsDemo/Classes 目錄中,這是里之所以要放到這個目錄下是因為 Example 工程是中生成 Podfile 文件中指定了這個目錄是源文件地址,我們按照默認的走就好。這里我們創建了一個測試文件和一個頭文件,導入了這個測試文件,共三個文件放到 Classes 文件夾,如下:

之后我們需要更新 Example 工程,在終端中 cd 到 Example 目錄下并運行 pod install 命令

CocoaPods 會更新 pod,這里直接從之前的 Classes 文件夾中獲取文件更新,完成后我們再看回 Xcode 是上目錄樹,添加的三個文件出現在了 Development Pods 下

此時我們可以在測試一下,在 ViewController 導入這個框架,看看能不能創建 CPYTestView

嗯。。。好像編譯通過了,這樣就完成一半了,剩下的就是把這個 pod 發布,放到一個大家都可以訪問的地方。

發布組件到 Git 倉庫中

上面完成后,我們就可以把創建出來的這個模板創建放到遠程的 Git 倉庫中,這里我們在 Coding.net 上創建一個倉庫,然后把代碼 push 到遠程

git commit -m "first commit"
git remote add originhttps://git.coding.net/cielpy/CPYPrivatePodsDemo.git
git push-uoriginmaster

Podfile 指定的版本號的話在 pod install 時會找指定的 tag,所以我們這里需要打一個 tag

git tag-m"first release"0.1.0
git push --tags #推送tag到遠端倉庫

編輯 podspec 文件

接下來我們要編輯 podspec 文件,在樣板工程的根目錄下有一個 CPYPrivatePodsDemo.podspec 文件,用文本編輯器打開,需要 summary, homepage 和 source 字段,其中 source 字段是剛剛把源碼上傳到的 Git 倉庫地址,需要用 HTTPS 鏈接,source_files 字段和默認的一樣,不用修改,因為我們之前就是把源文件放到這個目錄的。

#
# Be sure to run `pod lib lint CPYPrivatePodsDemo.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.newdo|s|
 s.name = 'CPYPrivatePodsDemo'
 s.version = '0.1.0'
 s.summary = 'A private pod test demo'

# 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 = <<-DESC
TODO: Add longdescription of the pod here.
 DESC

 s.homepage = 'https://coding.net/u/cielpy/p/CPYPrivatePodsDemo'
# s.screenshots = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
 s.license = { :type => 'MIT', :file =>'LICENSE'}
 s.author = { 'Cielpy'=>'beijiu572@gmail.com'}
 s.source = { :git => 'https://git.coding.net/cielpy/CPYPrivatePodsDemo.git', :tag => s.version.to_s }
# s.social_media_url = 'https://推ter.com/<推ter_USERNAME>'

 s.ios.deployment_target = '8.0'

 s.source_files = 'CPYPrivatePodsDemo/Classes/**/*'

# s.resource_bundles = {
# 'CPYPrivatePodsDemo' => ['CPYPrivatePodsDemo/Assets/*.png']
# }

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

本地測試 podspec 文件是否可用

用 pod 提供的工具檢查 podspec 文件是否合法,命令如下:

pod liblintCPYPrivatePodsDemo.podspec

如果結果顯示如下,說明是合法的

然后我們在另建一個工程,運行 pod init 初始化 Podfile,加入 pod 并指定 podspec 路徑,這里指定本地的 podspec 文件的路徑。

use_frameworks!

target 'PodTest'do
pod 'CPYPrivatePodsDemo',:podspec=>'/Users/xx/Downloads/CPYPrivatePodsDemo/CPYPrivatePodsDemo.podspec'
end

然后執行 pod install ,順利的話就可以安裝成功了。如圖

發布 podspec

接下來剩最后一步,這們指定文件絕對路徑是不科學的,我們不可能每次更新文件都修改一個 podspec 文件再 pod install 吧,方法就是發布 podspec 文件到遠程,既然我們要做私有的 pod,就不能放在公共的倉庫里,這里我們新建一個倉庫,專門放我們的私有 podspec 文件。

在 coding.net 上另外建一個名字為 spec 的倉庫,作為我們私有的 podspec 專用倉庫,然后在本地添加一個新的源

pod repo add privatehttps://git.coding.net/cielpy/spec.git

然后發布我們剛才編輯的 podspec 文件

顯已添加到遠程倉庫中。

去遠程倉庫中看看

有了!

最后一步

剩最后一步了,替換掉原來測試工程中的 Podfile 中指定的 podspec 路徑,改成如下的正常的方式:

source 'https://git.coding.net/cielpy/spec.git'

use_frameworks!

target 'PodTest'do
pod 'CPYPrivatePodsDemo'
end

不指定版本號會取最新的一個版本,然后 pod update 更新版本的 podspec 并安裝,正常的話,得到如下結果。

到這里就完成了。

因為我們的倉庫都是私有的,所以在哪里需要安裝的話,需要有對這兩個私有倉庫的訪問權限就好,發布僅有的類似,只是發布到了官方的 podspec 倉庫。

 

來自:https://imciel.com/2016/07/25/create-private-pods/

 

 本文由用戶 oldv8739 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!