pod創建公有庫、私有庫

隨着時間、業務的不斷繁雜和增多。開發的工程也會逐漸的無序和強耦合。通過pods封裝好各種庫進行有效的節藕和組合是插件化的有效方法。下面介紹一下基礎的通過pod怎樣創建公有的和私有的庫。


爲什麼要使用Cocoapods來管理第三方庫呢?

  • 傳統使用第三方庫的劣勢

    1、使用一個第三方SDK,需要在工程裏面添加一堆配置,少添加一步配置就會報一大堆錯誤。這個時候爲了排查少了哪一個步驟,只能從頭開始重做一遍,太浪費時間和精力。有些配置還不好配置,就更使人煩躁鬱悶了。

    2、如果使用的第三方SDK有比較重要的更新,想使用最新的SDK只能到官方下載最新的SDK,重新導入到自己的項目工程中。

    3、如果公司有多個項目,每一個工程都這樣配置一遍,這是多麼痛苦的領悟呀。

  • 使用Cocoapods管理第三方庫的優勢

    1、我們可以避免上訴的問題,使用方便。

    2、方便我們自己管理,只需要更新版本就行了,以前的庫還可以保留讓他人使用。

如何創建自己的共有庫

1、註冊Trunk

trunk需要CocoaPods 0.33版本以上,用pod --version

命令查看版本

CocoaPods版本

  • 如果版本低,需要升級:

1
2
sudo gen install cocoapods
pod setup
  • 查看自己是否註冊過Trunk

1
pod trunk me

沒有註冊過

  • 註冊

1
2
3
4
5
// 加上--verbose可以輸出詳細debug信息,方便出錯時查看。
pod trunk register zhangyqyx@163.com "zhangyqyx" --verbose
 
"zhangyqyx" 裏面代表你的用戶名,最好起一個好的名字
zhangyqyx@163.com 代表你的郵箱

註冊完成之後會給你的郵箱發個郵件,進入郵箱郵件裏面有個鏈接,需要點擊確認一下

  • 註冊成功後可以再查看一下個人信息pod trunk me

查看註冊信息

2、創建一個項目

1、github上創建一個項目

創建項目

2、將項目克隆下來,並添加公開庫文件

添加後的項目目錄

3、創建.podspec

1、cd 到你的項目下

1
2
// 注 ZYRunTimeCoT 這個是你框架的名稱
2、pod spec create ZYRunTimeCoT

4、編輯.podspec文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Pod::Spec.new do |s|
  s.name         = "ZYRunTimeCoT"
  s.version      = "0.0.1"
  s.ios.deployment_target = '8.0'
  s.summary      = "簡介"
  s.homepage     = "https://github.com/zhangyqyx/ZYRunTimeCoT"
  s.social_media_url = 'https://www.baidu.com'
  s.license      = "MIT"
  # s.license    = { :type => "MIT", :file => "FILE_LICENSE" }
  s.author       = { "zyq" => "[email protected]" }
  s.source       = { :git => 'https://github.com/zhangyqyx/ZYRunTimeCoT.git', :tag => s.version}
  s.requires_arc = true
  s.source_files = 'runtime/*'
  #s.public_header_files = 'runtime/TFRuntimeManager.h'
 
end

接下來講解一下每行代碼的含義

s.name:名稱,pod search 搜索的關鍵詞,注意這裏一定要和.podspec的名稱一樣,否則報錯

s.version:版本號

s.ios.deployment_target:支持的pod最低版本

s.summary: 簡介

s.homepage:項目主頁地址

s.social_media_url:社交網址,這裏我寫的微博默認是百度,如果你寫的是你自己的博客的話,你的podspec發佈成功後會@你

s.license:許可證

s.author:作者

s.source:項目的地址

s.requires_arc: 是否支持ARC

s.source_files:需要包含的源文件

s.public_header_files:公開的頭文件

//其他

s.resources: 資源文件

s.dependency:依賴庫,不能依賴未發佈的庫,可以寫多個依賴庫

常見的寫法:

1、dependency:寫法

1
s.dependency = 'AFNetworking' 'SDWebImage'

2、source_files: 寫法

1
2
3
'runtime/*'
'runtime/runtime/*.{h,m}'
'runtime/**/*.h'
  • '*'表示匹配所有文件

  • '*.{h,m}' 表示匹配所有以.h和.m結尾的文件

  • '**' 表示匹配所有子目錄

3、source: 常見寫法

1
2
3
s.source = { :git => "https://github.com/zhangyqyx/ZYRunTimeCoT.git", :commit => "68defea" }
s.source = { :git => "https://github.com/zhangyqyx/ZYRunTimeCoT.git", :commit => "68defea", :tag => 1.0.0 }
s.source = { :git => "https://github.com/zhangyqyx/ZYRunTimeCoT.git", :tag => s.version }
  • commit => "68defea" 表示將這個Pod版本與Git倉庫中某個commit綁定

  • tag => 1.0.0 表示將這個Pod版本與Git倉庫中某個版本的comit綁定

  • tag => s.version 表示將這個Pod版本與Git倉庫中相同版本的comit綁定

5、如果前面沒有選擇創建這個LICENSE文件, 創建LICENSE(許可證/授權)文件,此文件必須要有

創建一個文件名字命名爲LICENSE,內容爲:只需要把前面的版權改一下就行了,後面的都一樣

Copyright (c) 2013-2015 ZYRunTimeCoT (https://github.com/zhangyqyx/ZYRunTimeCoT)


Permission is hereby granted, free of charge, to any person obtaining a copy

of this software and associated documentation files (the "Software"), to deal

in the Software without restriction, including without limitation the rights

to use, copy, modify, merge, publish, distribute, sublicense, and/or sell

copies of the Software, and to permit persons to whom the Software is

furnished to do so, subject to the following conditions:


The above copyright notice and this permission notice shall be included in

all copies or substantial portions of the Software.


THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR

IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,

FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE

AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER

LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,

OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN

THE SOFTWARE.

6、上傳到Git

將包含配置好的 .podspec, LICENSE 的項目提交 Git

7、打tag

1
2
3
4
//爲git打tag, 第一次需要在前面加一個v
git tag "v0.0.1" // 如果出現錯誤,試一下不加v的情況
//將tag推送到遠程倉庫
git push --tags

如果我們的tag打錯了,沒有用的話,我們應該怎麼刪除呢?

1、查看tags

git tag 就會羅列出我們所有的tags

2、刪除本地tags

git tag -d + 分支名稱就會刪除本地的分支

3、刪除遠程分支

git push origin :refs/tags/分支名稱 就刪除了遠程分支

如圖

刪除tag

8、驗證.podspec文件

1
2
// --verbose 如果驗證失敗會報錯誤信息
pod spec lint ZYRunTimeCoT.podspec --verbose

如果出現這種警告性的問題,我們可以直接忽略

出現警告

1
pod lib lint --allow-warnings

出現這種情況就說明我們通過了驗證

通過驗證

如果出現這種情況,可能是你的那個版本找不到這個文件,

找不到文件

你可以嘗試 s.source 添加一句 :commit => "68defea"  68defea是你的版本號,如圖

添加版本號

9 、發佈

發佈時會驗證 Pod 的有效性,如果你在手動驗證 Pod 時使用了 --use-libraries 或 --allow-warnings 等修飾符,那麼發佈的時候也應該使用相同的字段修飾,否則出現相同的報錯。

1
2
// --use-libraries --allow-warnings
pod trunk push ZYRunTimeCoT.podspec

出現這種情況就說明你發佈成功了,等待人家審覈就行了

發佈成功

10、驗證倉庫

1
pod search ZYRunTimeCoT.

你可能會出現這種情況

錯誤


解決 ,刪除文件路徑,重新生成

1
2
rm ~/Library/Caches/CocoaPods/search_index.json
pod setup

如果還是不行,估計是在你的項目還在審覈中,你可以通過其他輔助手段去驗證;

1、執行 pod trunk me 命令,看看有沒有你的庫

查看庫信息

2、在CocoaPod管理所有第三方庫(CocoaPod管理的庫)中所搜一下(這個也有延時,如果搜索到就出現這樣的結果,展示的是上一個集成庫的搜索結果)

搜索結果

共有庫的創建這裏就結束了。

創建私有庫

1、創建一個私有的項目(可以是公司自己的git管理工具、也可以是碼雲上的),創建方法同公共庫的第二步

2、創建.podspec

方法同公共庫創建的第三步

3、編輯.podspec文件

方法同公共庫創建的第四步

4、上傳到Git

方法同公共庫創建的第六步

5、打tag

方法同公共庫創建的第七步

6、驗證.podspec文件

方法同公共庫創建的第八步

7、添加一個私有庫並和項目地址做綁定

pod repo add ZYRunTimeCoT https://github.com/zhangyqyx/ZYRunTimeCoT.git

8、向私有的庫裏添加podspec文件

pod repo push ZYRunTimeCoT ZYRunTimeCoT.podspec

9、新建一個項目進行驗證 

xcode新建項目 在podfile中添加

pod 'ZYRunTimeCoT', '~> 0.0.1'

如果提示 'unable to find a specification for'

需要在podfile文件中添加源地址

source 'https://github.com/zhangyqyx/ZYRunTimeCoT.git'

如圖所示

podfile文件



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章