cocoapods的安裝和使用參考:php
https://www.jianshu.com/p/b656c3c59af5html
若是要讓本身的工程可以被引入,好比其餘人的ipa只須要一句配置就能導入你的ios的sdk工程,那麼首先,你的工程要具備被cocoapods引用的特性,須要將工程放到github上,並添加cocoapods能識別的spec文件,參考:linux
https://www.jianshu.com/p/f146fa5358d5?mType=Group (如何使用Cocoapods管理本身github上的項目,並讓其支持pod)ios
遇到的問題:git
解決: https://blog.csdn.net/huang512715681/article/details/51885361github
command: rm ~/Library/Cashes/Cocoapods/search_index.jsonjson
(2)高版本mac報錯:MAC /usr/bin/目錄下 Operation not permitted的解決ruby
解決:https://blog.csdn.net/yemao_guyue/article/details/80575532網絡
command:session
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
(3) pod setup失敗或者太慢
解決:http://www.cocoachina.com/bbs/read.php?tid-193398.html
再加一點:我本地使用git clone 下我fork的,仍是很慢,最後決定去一臺網絡比較好的linux克隆,克隆好之後,修改了.git文件夾的名字問git_bak,並壓縮成git_bak.tar,而後複製到mac上,放到~/.cocoapods下的repo的master下(若是路徑不存在,就建立一個),而後在master目錄下執行如下動做:
tar -xvf git_bak.tar
mv git_bak .git
git checkout .
最後刪掉git_bak.tar
再執行pod setup ,很快就行了
(4)gem source --add https://ruby.taobao.org/ 失敗
解決:我沒有使用淘寶的鏡像,由於一直報404找不到,也嘗試過其餘鏡像,也失敗了,因此我使用了默認鏡像。
(5)在執行git trunk push 時報錯:‘You need to register a session first’
解決:https://blog.csdn.net/Yj_sail/article/details/52363920
好比:pod trunk register test@163.com 'test' --description='my pro' ,而後你寫的郵箱會收到郵件(個人被歸類到垃圾郵箱了,你的也可能會,不要一位本身沒收到,找找看),而後按照說明,打開他給的連接,就能夠了,而後再執行下git truck push ,你的gitHub倉庫代碼配置CocoPods支持就完成了。
(6)Podfile中導入指定庫的方式:
(6.1)致使指定版本:pod ‘庫名’, ‘版本’ 好比: pod ‘afnetworking’ , '~2.3.1'
(6.2)導入最新版本:pod ‘庫名’, : 引入庫,什麼版本均可以(通常就是最新版本了) 好比: pod 'afnetworking'
(7) pod update 指定庫 :
pod update 庫名 ,好比pod update MJRefresh
(8)CocoaPods 執行pod install /pod update 慢的問題:
參考:https://www.cnblogs.com/yiqiedejuanlian/p/3698788.html
command:
pod install --verbose --no-repo-update
pod update --verbose --no-repo-update
(9) pod update 本身的庫 發現沒有更新版本號
場景: 我在其餘app工程的podfile中寫的引入個人庫是: pod ‘my_framework’ 意味這當我執行pod update的時候,確定是能夠拿到my_framework的最新版本的,可是我分明修改了my_framework的版本號,而且提交了代碼,可是我執行pod update 沒有拿到最新版本,仍是上一個版本。
解決: 原來是修改版本號之後,忘記發佈到cocoapod的管理了,因此須要在my_framework工程下執行:pod trunk push
說明:若是代碼庫裏只有framework,好比只有mytest.framework,這是podspecs文件中的s.source_files的的值相似以下:
s.source_files='my.framework/**/*'
(11)ERROR | [iOS] unknown: Encountered an unknown error ([!] /usr/bin/git clone https://github.com/lebo123/LBLelinkKit.git /var/folders/nz/_6d9dzs17fl29_lh1n91md9r0000gp/T/d20180829-41657-tzjl49 --template= --single-branch --depth 1 --branch 1.0.4
是由於個人podspec文件中的這一行:
s.source = { :git => "https://github.com/lebo123/LBLelinkKit.git", :tag => "#{s.version}" }
能夠看出,版本號和tag是強相關的,因此修改了版本號就要添加一個tag,好比修改了版本號爲‘1.0.2’,就要推 ‘1.0.2’的tag到git上,若是不想綁定兩個的關係,
把:tag => "#{s.version}" 拿掉,不過,拿掉的話,在執行pod trunk push的時候會有告警「source:Git source should specify a tag」,不過能夠添加 --allow-warnings來忽略告警,即
pod push trunk --allow-warnings
(12) Unable to accept duplicat entry for :test(1.0.4)
說明:已經發布的版本,不能重複發佈,必須修改版本號之後在發佈。
(13)CocoaPods was not able to update the `master` repo. If this is an unexpected issue and persists you can inspect it running `pod repo update --verbose`
解決:https://www.cnblogs.com/yajunLi/p/6386239.html
按照說明,執行pod repo update --verbose
最後,個人LBLelinkKit工程以下:
其中的LBLelinkKit.podspec的內容以下:
Pod::Spec.new do |s|
s.name = "LBLelinkKit"
s.version = "1.0.4"
s.summary = "lebo ios framework LBLelinkKit"
s.homepage = "https://github.com/lebo123/LBLelinkKit"
s.license = "MIT"
s.authors = { "lebo123" => "cm@hpplay.cn" }
s.platform = :ios, "5.0"
s.source = { :git => "https://github.com/lebo123/LBLelinkKit.git", :tag => "#{s.version}" }
s.source_files ='LBLelinkKit.framework/**/*'
s.requires_arc = true
end
有一個test_app,要引用個人LBLelinkKit。要怎麼作呢?
test_app:
(1)在Podfile中添加:
pod 'LBLelinkKit'
(2) 首次的話執行pod install ,若是是後期更新版本的話,執行pod update
LBLelinkKit:
(1)若是有新版本要發佈,須要修改版本號,不能只修改代碼,重複發佈相同的版本,並提交版本修改的代碼
(2)而後執行pod trunk push 到cocoapods上管理
若是LBLelinkKit上有版本發佈,test_app只要執行pod update就能夠拿到最新版本了。