CocoaPods


Ruby 安裝

要安裝cocospods 首先需要安裝ruby,可以先安裝xcode,再安裝macport ,最后執(zhí)行命令

port install ruby

安裝CocoaPods

CocoaPods是用Ruby實(shí)現(xiàn)的,要想使用它首先需要有Ruby的環(huán)境。OS X系統(tǒng)默認(rèn)的已經(jīng)可以運(yùn)行Ruby了,因此我們只需要執(zhí)行以下命令:

$ sudo gem install cocoapods

如果是要安裝指定Pod版本

$ sudo gem install cocoapods -v 1.0.1

CocoaPods是以Ruby gem包的形式被安裝的。在安裝執(zhí)行的過程中,可能會問我們是不是更新rake,輸入y即可。這是因?yàn)閞ake gem包會在安裝的過程中檢查更細(xì),如果有可用的新版本就會出現(xiàn)剛才的選項(xiàng)。

在安裝進(jìn)程結(jié)束的時候,執(zhí)行命令:

$ pod setup

如果沒有報錯,就說明一切安裝就成功了。

安裝過程中可能遇到的問題

  1. 執(zhí)行完install命令半天沒反應(yīng)

這有可能是因?yàn)镽uby的默認(rèn)源使用的是cocoapods.org,國內(nèi)訪問這個網(wǎng)址有時候會有問題,網(wǎng)上的一種解決方案是將遠(yuǎn)替換成淘寶的,替換方式如下:

$ gem sources --remove https://rubygems.org/

$ gem sources -a https://ruby.taobao.org/

要想驗(yàn)證是否替換成功了,可以執(zhí)行:

$ gem sources -l

正常的輸出是:
http://ruby.taobao.org/

  1. gem版本過老

gem是管理Ruby庫和程序的標(biāo)準(zhǔn)包,如果它的版本過低也可能導(dǎo)致安裝失敗,解決方案自然是升級gem,執(zhí)行下述命令即可:

$ sudo gem update --system

  1. 安裝完成后,執(zhí)行pod setup命令時報錯:

     /Users/wangzz/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:298:in to_specs': Could not find 'cocoapods' (>= 0) among 6 total gem(s) (Gem::LoadError)
     from /Users/wangzz/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:309:in to_spec'
     from /Users/wangzz/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_gem.rb:53:in gem'
     from /Users/wangzz/.rvm/rubies/ruby-1.9.3-p448/bin/pod:22:in '
    

這就是路徑設(shè)置的問題,可以通過執(zhí)行下面命令解決該問題

$ rvm use ruby-1.9.3-p448

升級CocoaPods

升級很簡單,再次執(zhí)行安裝命令即可:

$ sudo gem install cocoapods

需要注意的是,如果安裝的時候使用了sudo,升級的時候一樣需要使用該關(guān)鍵字,不然升級完了以后又會出現(xiàn)路徑不匹配問題。

  • 如果出現(xiàn)了下面的錯誤:
$ sudo gem install cocoapodsERROR: While executing gem ... (Errno::EPERM) Operation not permitted - /usr/bin/xcodeproj

原因是/usr/bin/xcodeproj目錄路徑錯了

$ ls -al /usr/bin/xcodeprojls: cannot access /usr/bin/xcodeproj: No such file or directory

使用sudo gem install -n /usr/local/bin cocoapods --pre命令順利安裝成功

$ sudo gem install -n /usr/local/bin cocoapods --pre
Successfully installed xcodeproj-1.0.0Fetching: molinillo-0.4.5.gem (100%)
Successfully installed molinillo-0.4.5Fetching: cocoapods-try-1.0.0.gem (100%)
Successfully installed cocoapods-try-1.0.0```

###使用CocoaPods

- **創(chuàng)建Podfile**

  首先進(jìn)入到工程的根目錄下,創(chuàng)建空白的Podfile文件。

  *PS:Podfile文件也可以不放在工程的根目錄下,只是會稍微麻煩點(diǎn)*

- **編輯Podfile**

  根據(jù)需要,我們可以在Podfile文件中寫入需要用到的第三方庫,以SBJson、AFNetworking、Reachability三個庫為例,我的Podfile內(nèi)容如下:

        platform :ios

        pod 'Reachability',  '~> 3.0.0'

        pod 'SBJson', '~> 4.0.0'

        platform :ios, '7.0'

        pod 'AFNetworking', '~> 2.0'

- **執(zhí)行導(dǎo)入命令**

  準(zhǔn)備工作都完成后,開始導(dǎo)入第三方庫:

  > $ pod install

  首先進(jìn)入工程根目錄,然后執(zhí)行pod install命令,CocoaPods就開始為我們做下載源碼、配置依賴關(guān)系、引入需要的framework等一些列工作,命令的執(zhí)行結(jié)果打印出來如下:

        Analyzing dependencies

        Downloading dependencies

        Installing AFNetworking (2.1.0)

        Installing JSONKit (1.5pre)

        Installing Reachability (3.0.0)

        Generating Pods project

        Integrating client project

        [!] From now on use `CocoaPodsTest.xcworkspace`.

  這就說明pod install命令執(zhí)行成功了。再來看看工程根目錄發(fā)生的變化,可以看到,工程的根目錄下多了三個東西:CocoaPodsTest.xcworkspace、Podfile.lock文件和Pods目錄。

  再看看剛才執(zhí)行完pod install命令打印出來的內(nèi)容的最后一行:

        [!] From now on use `CocoaPodsTest.xcworkspace`.

  提示我們從現(xiàn)在起,我們需要使用CocoaPodsTest.xcworkspace文件來開發(fā)。

  *對于工程發(fā)生的變化,有幾點(diǎn)需要說明:*

  1. 第三方庫會被編譯成靜態(tài)庫供我們正真的工程使用
  2. CocoaPods會將所有的第三方庫以target的方式組成一個名為Pods的工程,該工程就放在剛才新生成的Pods目錄下。整個第三方庫工程會生成一個名稱為libPods.a的靜態(tài)庫提供給我們自己的CocoaPodsTest工程使用。
  3. 我們的工程和第三方庫所在的工程會由一個新生成的workspace管理。為了方便我們直觀的管理工程和第三方庫,CocoaPodsTest工程和Pods工程會被以workspace的形式組織和管理,也就是我們剛才看到的CocoaPodsTest.xcworkspace文件。原來的工程設(shè)置已經(jīng)被更改了,這時候我們直接打開原來的工程文件去編譯就會報錯,只能使用新生成的workspace來進(jìn)行項(xiàng)目管理。


- **Podfile.lock文件**

  在開始使用CocoaPods,執(zhí)行完pod install之后,會生成一個Podfile.lock文件。這個文件看起來跟我們關(guān)系不大,實(shí)際上絕對不應(yīng)該忽略它。

  該文件用于保存已經(jīng)安裝的Pods依賴庫的版本,通過CocoaPods安裝了SBJson、AFNetworking、Reachability三個Pods依賴庫以后對應(yīng)的Podfile.lock文件內(nèi)容為:

        PODS:

        - AFNetworking (2.1.0):

        - AFNetworking/NSURLConnection

        - AFNetworking/NSURLSession

        - Reachability (3.0.0)

        - SBJson (4.0.0)

        DEPENDENCIES:

        - AFNetworking (~> 2.0)

        - Reachability (~> 3.0.0)

        - SBJson (~> 4.0.0)

        SPEC CHECKSUMS:

        AFNetworking: c7d7901a83f631414c7eda1737261f696101a5cd

        Reachability: 500bd76bf6cd8ff2c6fb715fc5f44ef6e4c024f2

        SBJson: f3c686806e8e36ab89e020189ac582ba26ec4220

        COCOAPODS: 0.29.0

  Podfile.lock文件最大的用處在于多人開發(fā)。對于沒有在Podfile中指定Pods依賴庫版本的寫法,如下:

        pod 'SBJson'

  該句話用于獲取當(dāng)前SBJson這個Pods依賴庫的最新版本。

  當(dāng)團(tuán)隊(duì)中的某個人執(zhí)行完pod install命令后,生成的Podfile.lock文件就記錄下了當(dāng)時最新Pods依賴庫的版本,這時團(tuán)隊(duì)中的其它人check下來這份包含Podfile.lock文件的工程以后,再去執(zhí)行pod install命令時,獲取下來的Pods依賴庫的版本就和最開始用戶獲取到的版本一致。如果沒有Podfile.lock文件,后續(xù)所有用戶執(zhí)行pod install命令都會獲取最新版本的SBJson,這就有可能造成同一個團(tuán)隊(duì)使用的依賴庫版本不一致,這對團(tuán)隊(duì)協(xié)作來說絕對是個災(zāi)難!

  在這種情況下,如果團(tuán)隊(duì)想使用當(dāng)前最新版本的SBJson依賴庫,有兩種方案:

  1. 更改Podfile,使其指向最新版本的SBJson依賴庫
  2. 執(zhí)行pod update命令

  鑒于Podfile.lock文件對團(tuán)隊(duì)協(xié)作如此重要,我們需要將它添加到版本管理中。

- **Podfile文件**

    通常情況下我們都推薦Podfile文件都放在工程根目錄,事實(shí)上Podfile文件可以放在任意一個目錄下,需要做的是在Podfile中指定工程的路徑,和原來相比,Podfile文件就在最開始的位置增加了一行,具體內(nèi)容如下:

        xcodeproj "/Users/wangzz/Desktop/CocoaPodsTest/CocoaPodsTest.xcodeproj"

        platform :ios

        pod 'Reachability',  '~> 3.0.0'

        pod 'SBJson', '~> 4.0.0'

        platform :ios, '7.0'

        pod 'AFNetworking', '~> 2.0'

        //使用具體的代碼分支
        pod 'EZSwiftExtensions', :git => 'https://github.com/goktugyil/EZSwiftExtensions.git', :branch => 'Swift2.3' 

  指定路徑使用的是xcodeproj關(guān)鍵字。

- **Podfile和target**

  Podfile本質(zhì)上是用來描述Xcode工程中的targets用的。如果我們不顯式指定Podfile對應(yīng)的target,CocoaPods會創(chuàng)建一個名稱為default的隱式target,會和我們工程中的第一個target相對應(yīng)。換句話說,如果在Podfile中沒有指定target,那么只有工程里的第一個target能夠使用Podfile中描述的Pods依賴庫。

  如果想在一個Podfile中同時描述project中的多個target,根據(jù)需求的不同,可以有不同的實(shí)現(xiàn)方式。為了說明問題,在原來的工程中再創(chuàng)建一個名稱為Second的target,現(xiàn)在的project中包含的target有

  1. 多個target中使用相同的Pods依賴庫

    比如,名稱為CocoaPodsTest的target和Second的target都需要使用Reachability、SBJson、AFNetworking三個Pods依賴庫,可以使用link_with關(guān)鍵字來實(shí)現(xiàn),將Podfile寫成如下方式:

          link_with 'CocoaPodsTest', 'Second'

          platform :ios

          pod 'Reachability',  '~> 3.0.0'

          pod 'SBJson', '~> 4.0.0'

          platform :ios, '7.0'

          pod 'AFNetworking', '~> 2.0'

    這種寫法就實(shí)現(xiàn)了CocoaPodsTest和Second兩個target共用相同的Pods依賴庫。

  2. 不同的target使用完全不同的Pods依賴庫

    CocoaPodsTest這個target使用的是Reachability、SBJson、AFNetworking三個依賴庫,但Second這個target只需要使用OpenUDID這一個依賴庫,這時可以使用target關(guān)鍵字,Podfile的描述方式如下:

          target :'CocoaPodsTest' do

          platform :ios

          pod 'Reachability',  '~> 3.0.0'

          pod 'SBJson', '~> 4.0.0'

          platform :ios, '7.0'

          pod 'AFNetworking', '~> 2.0'

          end

          target :'Second' do

          pod 'OpenUDID', '~> 1.0.0'

          end

    其中,do/end作為開始和結(jié)束標(biāo)識符。

- **使用Podfile管理Pods依賴庫版本**

  再引入依賴庫時,需要顯示或隱式注明引用的依賴庫版本,具體寫法和表示含義如下:

        pod 'AFNetworking'      //不顯式指定依賴庫版本,表示每次都獲取最新版本

        pod 'AFNetworking', '2.0'    //只使用2.0版本

        pod 'AFNetworking', '> 2.0'    //使用高于2.0的版本

        pod 'AFNetworking', '>= 2.0'    //使用大于或等于2.0的版本

        pod 'AFNetworking', '< 2.0'    //使用小于2.0的版本

        pod 'AFNetworking', '<= 2.0'    //使用小于或等于2.0的版本

        pod 'AFNetworking', '~> 0.1.2'    //使用大于等于0.1.2但小于0.2的版本

        pod 'AFNetworking', '~>0.1'    //使用大于等于0.1但小于1.0的版本

        pod 'AFNetworking', '~>0'    //高于0的版本,寫這個限制和什么都不寫是一個效果,都表示使用最新版本


- **CocoaPods常用命令**

  - pod install
    根據(jù)Podfile文件指定的內(nèi)容,安裝依賴庫,如果有Podfile.lock文件而且對應(yīng)的Podfile文件未被修改,則會根據(jù)Podfile.lock文件指定的版本安裝。
    每次更新了Podfile文件時,都需要重新執(zhí)行該命令,以便重新安裝Pods依賴庫。

  - pod update
    若果Podfile中指定的依賴庫版本不是寫死的,當(dāng)對應(yīng)的依賴庫有了更新,無論有沒有Podfile.lock文件都會去獲取Podfile文件描述的允許獲取到的最新依賴庫版本。

  - pod search
    有了這條命令,就可以方便、迅速地找到需要的Pods依賴庫,命令格式為:
    > $ pod search OpenUDID

    后面的OpenUDID為參數(shù)。

    > $ pod 'OpenUDID', '~> 1.0.0'

  - pod setup

    命令格式為:

    > $ pod setup

    這條命令用于跟新本地電腦上的保存的Pods依賴庫tree。由于每天有很多人會創(chuàng)建或者更新Pods依賴庫,這條命令執(zhí)行的時候會相當(dāng)慢,還請耐心等待。我們需要經(jīng)常執(zhí)行這條命令,否則有新的Pods依賴庫的時候執(zhí)行pod search命令是搜不出來的。

###使用Cocoapods創(chuàng)建私有podspec

1. 創(chuàng)建.podspec
首先在你的項(xiàng)目中使用如下命令創(chuàng)建名為 LPPushService 的 LPPushService.podspec
> $ pod spec create LPPushService

2. 編輯.podspec
創(chuàng)建好的 .podspec 包含大量的注釋說明了每個參數(shù)的含義及用法。如果想詳細(xì)了解可以仔細(xì)閱讀。這里只介紹幾個常用的。
        Pod::Spec.new do |s| 
        s.name = "LPPushService" 
        s.version = "1.0.0" 
        s.summary = "integrate APNs rapidly" 
        s.homepage = "https://github.com/xiaofei86/LPPushService" s.license = { :type => "MIT", :file => "LICENSE" }
        s.author = { "XuYafei" => "xuyafei86@163.com" }
        s.social_media_url = "http://xuyafei.cn" 
        s.platform = :ios, "7.0" 
        s.source = { :git => "https://github.com/xiaofei86/LPPushService.git", :tag => s.version } 
        s.source_files = "LPPushService/**/*.{h,m}"
        s.resources = "LPPushService/Images/*.png" 
        s.dependency "BPushSDK", "1.4.1" 
        s.requires_arc = trueend
        
  s.name:名稱,pod search 搜索的關(guān)鍵詞
  s.version:版本
  s.summary:簡介,pod search 搜索的關(guān)鍵詞
  s.homepage:主頁地址,例如Github地址
  s.license:許可證
  s.author:作者
  s.social_media_url:社交網(wǎng)址
  s.platform:平臺
  s.source:Git倉庫地址,例如在Github地址后邊加上 .git 就是Git倉庫地址
  s.source_files:需要包含的源文件
  s.resources:需要包含的圖片等資源文件
  s.dependency:依賴庫,不能依賴未發(fā)布的庫
  s.requires_arc:是否要求ARC
        
  **s.source_files 常見寫法**
        "Directory1/*"
        "Directory1/Directory2/*.{h,m}"
        "Directory1/**/*.h"

    - “*” 表示匹配所有文件
    - “*.{h,m}” 表示匹配所有以.h和.m結(jié)尾的文件
    - “**” 表示匹配所有子目錄

  **s.source 常見寫法**
        s.source = { :git => "https://github.com/xiaofei86/LPPushService.git", :commit => "68defea" }
        s.source = { :git => "https://github.com/xiaofei86/LPPushService.git", :tag => 1.0.0 }
        s.source = { :git => "https://github.com/xiaofei86/LPPushService.git", :tag => s.version }

    - commit => "68defea" 表示將這個Pod版本與Git倉庫中某個commit綁定
    - tag => 1.0.0 表示將這個Pod版本與Git倉庫中某個版本的comit綁定
    - tag => s.version 表示將這個Pod版本與Git倉庫中相同版本的comit綁定

  按照上述規(guī)則編輯完成就制作好了 .podspec

3. 上傳到Git
  將包含配置好的 .podspec 的項(xiàng)目提交 Git,并給這次提交打上 tag,這時就可以在其他項(xiàng)目中使用 CocoaPods 引入你配置好的 Pod 了。
        pod 'LPPushService', :git => 'https://github.com/xiaofei86/LPPushService.git', :tag => '1.0.0'

  當(dāng)然,在給其他項(xiàng)目使用前最好先驗(yàn)證.podspec的有效性。
  - **驗(yàn)證.podspec**
    > $ pod spec lint LPPushService.podspec

    驗(yàn)證過程中:
          -> LPPushService
    驗(yàn)證成功后:
          LPPushService.podspec passed validation.
    驗(yàn)證失敗后:
          [!] The spec did not pass validation, due to 1 error.

    驗(yàn)證 .podspec 會先測試本地 .podspec 文件是否存在語法錯誤。測試成功再根據(jù) .podspec 文件找到遠(yuǎn)端倉庫對應(yīng)的版本克隆到本地并進(jìn)行配置。最后測試文件是否能夠編譯成功。

  - **.podspec驗(yàn)證失敗錯誤排查**
    - 語法錯誤
  如果是因?yàn)檎Z法錯誤,驗(yàn)證失敗后會給出錯誤的準(zhǔn)確定位
            [!] Invalid `LPPushService.podspec` file: no .<digit> floating literal anymore; put 0 before dot s.version = “1.0.0” ^LPPushService.podspec:5: syntax error, unexpected tFLOAT, expecting '(' s.version = “1.0.0” ^

      標(biāo)記“^”的地方即為有語法錯誤的地方。
      上述錯誤是因?yàn)槭褂谩拔谋揪庉嫛边M(jìn)行編輯造成的。使用文本編輯有時候英文""引號會自動變成中文“”引號。
            [!] Your Podfile has had smart quotes sanitised. To avoid issues in the future, you should not use TextEdit for editing it. If you are not using TextEdit, you should turn off smart quotes in your editor of choice.

      使用 vim 將其改為英文的""引號即可。
    - 依賴錯誤
      但是,有些非語法錯誤是不會給出錯誤原因的。這個時候可以使用“--verbose”來查看詳細(xì)的驗(yàn)證過程來幫助定位錯誤。
            pod spec lint LPPushService.podspec --verbose

      如下錯誤通過 --verbose 就可以找到原因。
            -> LPPushService (1.0.0) - ERROR | [iOS] Encountered an unknown error (The 'Pods' target has transitive dependencies that include static binaries: (/private/var/folders/jz/b_m3k7ln47524cm__h3__mk00000gn/T/CocoaPods/Lint/Pods/BPushSDK/LibBPush/libBPush.a)) during validation.

      這個錯誤是因?yàn)橐蕾噹欤╯.dependency)包含了.a靜態(tài)庫造成的。雖然這并不影響Pod的使用,但是驗(yàn)證是無法通過的。可以通過 --use-libraries 來讓驗(yàn)證通過。
            pod spec lint LPPushService.podspec --verbose --use-libraries

      這種情況下使用 --use-libraries 雖然不會出現(xiàn)錯誤(error),但是有時候會帶來一些警告(waring),警告同樣是無法通過驗(yàn)證的。這時可以用 --allow-warnings 來允許警告。
            pod spec lint LPPushService.podspec --verbose --use-libraries --allow-warnings

    - 安裝錯誤
      如果在其他項(xiàng)目 pod install 的過程中,出現(xiàn)包含“undefined method `end_with?' for nil”字樣的報錯。進(jìn)入“~/.cocoapods/repos”目錄,刪除“master”,并將 master-1 改為 master 即可。
如果出現(xiàn)如下錯誤,而你的驗(yàn)證可以通過,那么一般更新下版本號就可以解決。
            [!] Unable to find a specification for 'LPPushService'.

    - 再次驗(yàn)證
      如果錯誤發(fā)生在 .podspec 中。當(dāng)修改完時,不需要再次提交就可以直接驗(yàn)證。如果錯誤發(fā)生在代碼中,則需要再次提交才能驗(yàn)證。

4. 發(fā)布到CocoaPods
你可以用 .podspec 文件來方便的管理內(nèi)部代碼,當(dāng)然,也可以發(fā)布自己的 Pod 供其他開發(fā)者使用。
CocoaPods 0.33中加入了 Trunk 服務(wù),使用 Trunk 服務(wù)可以方便的發(fā)布自己的Pod。雖然一開始使用 GitHub Pull Requests 來整理所有公共 pods 效果很好。但是,隨著 Pod 數(shù)量的增加,這個工作對于 spec 維護(hù)人員 Keith Smiley 來說變得十分繁雜。甚至一些沒有通過 $ pod lint 的 spec 也被提交上來,造成 repo 無法 build。CocoaPods Trunk 服務(wù)的引入,解決了很多類似的問題。每次使用 Trunk 服務(wù)發(fā)布 Pod 時都會通過 $ pod lint 驗(yàn)證 .podspec 是否有效。要想使用 Trunk 服務(wù),首先需要使用如下命令注冊自己的電腦。這很簡單,只要你指明你的郵箱地址(spec文件中的)和名稱即可。CocoaPods 會給你填寫的郵箱發(fā)送驗(yàn)證郵件,點(diǎn)擊郵件中的鏈接就可通過驗(yàn)證。
        pod trunk register xuyafei86@163.com "XuYafei"

  然后就可以發(fā)布你的 Pod 了。
        pod trunk push LPPushService.podspec

  發(fā)布時會驗(yàn)證 Pod 的有效性,如果你在手動驗(yàn)證 Pod 時使用了 --use-libraries 或 --allow-warnings 等修飾符,那么發(fā)布的時候也應(yīng)該使用相同的字段修飾,否則出現(xiàn)相同的報錯。
        pod trunk push LPPushService.podspec --use-libraries --allow-warnings

  發(fā)布成功后,就可以使用 pod search 搜索到你的 Pod 了!
        -> LPPushService (1.0.0) 
        integrate APNs rapidly 
        pod 'LPPushService', '~> 1.0.0' 
        - Homepage: https://github.com/xiaofei86/LPPushService 
        - Source: https://github.com/xiaofei86/LPPushService.git 
        - Versions: 1.0.0 [master repo]

  由于 pod search 是搜索的本地“~/.cocoapods”,所以在其他設(shè)備上可能無法搜到。這時只需要執(zhí)行 pod install 更新下 pod 倉庫即可(不要加 --no-repo-update)。

5. 版本升級
  當(dāng)需要更新 Pod 版本的時候,修改 .podspec 中的 s.version 為更高的版本號,并修改 s.source 中對應(yīng)的 Git 版本。提交到Git,并打上對應(yīng)tag。然后再次執(zhí)行
        pod trunk push LPPushService.podspec

  將新的 .podspec 發(fā)布到 CocoaPods。更新完成!
  為了更新更加方便,版本控制更加清晰,s.source 建議采用如下寫法:
        s.source = { :git => "https://github.com/xiaofei86/LPPushService.git", :tag => s.version }

  這樣寫將 Git 的版本與 CocoaPods 的版本進(jìn)行了綁定。每次提交后再給本次提交打上 tag 就完成了更新。而且在 Git 中就可以清晰的看到哪次提交對應(yīng)的哪個 CocoaPods 版本。如果與 commit 綁定,則要通過兩次提交才能完成更新,第一次先提交修改代碼,第二次將上一次 commit id 更新到 s.source 然后再次提交。如果直接與固定 tag 綁定,則每次還都要修改 s.source。如果你的 Pod 是私有庫,那么 s.source 其實(shí)是無用的。因?yàn)樵?Podfile 中已經(jīng)指明了地址和版本(如下)。這時 s.source 可以隨便填寫,但最好還是按照上述規(guī)則以便以后發(fā)布。
        pod 'LPPushService', :git => 'https://github.com/xiaofei86/LPPushService.git', :tag => 1.0.0
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 項(xiàng)目組件化、平臺化是技術(shù)公司的共同目標(biāo),越來越多的技術(shù)公司推崇使用pod管理第三方庫以及私有組件,一方面使項(xiàng)目架構(gòu)...
    swu_luo閱讀 22,217評論 0 39
  • CocoaPods 是什么? CocoaPods 是一個負(fù)責(zé)管理 iOS 項(xiàng)目中第三方開源庫的工具。CocoaPo...
    朝洋閱讀 25,741評論 3 50
  • Cocoapods是非常好用的一個iOS依賴管理工具,使用它可以方便的管理和更新項(xiàng)目中所使用到的第三方庫,以及將自...
    Nash33閱讀 2,105評論 0 50
  • 一. CocoaPods的介紹 什么是CocoaPods?CocoaPods是一個負(fù)責(zé)管理iOS項(xiàng)目中第三方開源庫...
    輝712閱讀 3,993評論 0 7
  • 世界之大,無奇不有,不光在我們生活中會遇見形形色色的人,在職場中偶爾也能遇見讓你抓狂的“奇葩同事”。 談起小新,公...
    人才加閱讀 269評論 0 0