swift項目-讓本身的項目支持cocoapod和carthage

前言:最近本身寫了一個圖片選擇器的庫,想借着這個機會學習一下怎麼讓本身的庫支持cocoapod和carthage,因爲我封裝的這個庫內容很是多,因此在開發過程當中遇到了不少的小問題都比較特殊,google半天有時也解決不了,經過慢慢摸索仍是成功了,在這裏記錄一下我在開發中遇到的各類問題點。ios

假如咱們已經建立了一個庫,庫的名稱是CLImagePickerTool,而且已經上傳到github,下面咱們就來一步一步讓它支持cocoapod.git

(對於須要暴露出來的類和方法,必定要用public修飾,由於我第一次搞得時候就沒有注意到這一點,還有一點!!個人工程名稱叫CLImagePickerTool,個人庫的名稱也叫CLImagePickerTool,這樣很差!在下面我集成carthage的時候就遇到了問題,建議項目名稱和庫的名稱不要一致,由於人家引用的是你的庫而不是整個項目,只要保證庫名稱是你想要的就行了。下面先貼出來個人項目目錄,後面也能夠參考)github

屏幕快照 2017-08-31 下午8.56.01.png

1、支持cocoapod

1.cd到當前目錄swift

cd  CLImagePickerTool

2.在當前文件夾下建立一個podspec文件vim

pod spec create CLImagePickerTool

3.編輯 podspec文件,這裏是用vim打開的服務器

vim CLImagePickerTool.podspec

4.因爲podspec文件自動生成了不少內容,咱們能夠不用管他,全選刪除,將下面的代碼複製到該文件中,下面對這塊代碼進行講解,根據你本身的庫名稱和目錄對照着改一下就行了。學習

Pod::Spec.new do |s|
      s.name = 'CLImagePickerTool'
      s.version = '2.0.5'
      s.license = 'MIT'
      s.summary = 'This is a picture selector'
      s.homepage = 'https://github.com/Darren-chenchen/CLImagePickerTool'
      s.authors = { 'Darren-chenchen' => '1597887620@qq.com' }
      s.source = { :git => 'https://github.com/Darren-chenchen/CLImagePickerTool.git', :tag => s.version.to_s }

      s.ios.deployment_target = '8.0'

      s.source_files = 'CLImagePickerTool/CLImagePickerTool/**/*.swift'
      s.resource_bundles = { 
'CLImagePickerTool' => ['CLImagePickerTool/CLImagePickerTool/images/**/*.png','CLImagePickerTool/CLImagePickerTool/**/*.{xib,storyboard}','CLImagePickerTool/CLImagePickerTool/**/*.{lproj,strings}']
      }
    end

下面咱們來解釋一下各個選項的意義。
s.name = 'CLImagePickerTool' 你的庫的名稱
s.version = '2.0.5' 版本號
s.license = 'MIT' listen文件的類型
s.summary 簡單的描述
s.homepage = 'https://github.com/Darren-che...' 庫的github地址測試

詳細說下下面的含義吧,好比個人庫的所有demo都在CLImagePickerTool項目下的CLImagePickerTool文件夾下,而且都是swift寫的就能夠表示成以下的形式
s.source_files = 'CLImagePickerTool/CLImagePickerTool/*/.swift'ui

對於項目中用到的資源文件,好比個人圖片路徑就是CLImagePickerTool/CLImagePickerTool/images,若是用到了xib或者storyboard,或者用到了本地化相關的文件,總之只要是相關的資源文件都要表現出來
s.resource_bundles = {
'CLImagePickerTool' => ['CLImagePickerTool/CLImagePickerTool/images//.png','CLImagePickerTool/CLImagePickerTool//.{xib,storyboard}','CLImagePickerTool/CLImagePickerTool/*/.{lproj,strings}']google

}

5.提交代碼到github,並打標籤

git commit -a -m 「......」
    git push 
    git tag 1.0.0   // 這個版本要和podspec中的version一致
    git push origin --tags   // 提交到遠端

6.檢查podspec 文件是否有錯誤

pod spec lint CLImagePickerTool.podspec

若是出現CLImagePickerTool.podspec passed validation. 就表示沒有錯誤。

7.若是以前沒有註冊過CocoaPods帳號。
打開終端,在終端中輸入以下命令:

pod trunk register 郵箱地址 '用戶名' --description='描述信息'

而後根據終端顯示信息,若是成功的話會提示讓你去郵箱裏確認進行激活。

輸入以下命令可查看我的CocoaPods帳號信息

pod trunk me

8.若是註冊過,就你直接執行下面的代碼,直接推到cocoapods服務器

pod trunk push  CLImagePickerTool.podspec

(若是你完成了第6部,下面的操做跟着終端的提示一步一步也能完成後續操做,主要是遇到問題不要太着急,細心看!)

9.若是你能完成上面操做,在執行完 pod trunk push CLImagePickerTool.podspec後若是出現下面的狀況就說明你的庫已經支持cocoapod了。

屏幕快照 2017-08-31 下午9.00.00.png

10.成功上傳後要先執行 pod setup更新下pod才能搜索到本身的庫。

2、支持carthage

  1. 新建targets

屏幕快照 2017-08-31 下午9.03.36.png

屏幕快照 2017-08-31 下午9.03.51.png

2.添加須要編譯的文件和資源,這個地方要特別注意,Compile Sources 文件中不能添加xib文件和圖片資源,只能添加後綴名爲swift的文件

![
![Uploading 屏幕快照 2017-08-31 下午9.08.55_981672.png . . .]
](http://upload-images.jianshu....

屏幕快照 2017-08-31 下午9.08.55.png

  1. 這裏也有一個注意點,你們能夠從圖片中看到,我新建的target名稱是CLImagePickerTool-framework,若是我想打包出來的文件名不要這個名稱,我想要換個名稱,我原本是想用CLImagePickerTool這個名稱,那麼打包出來的framework就是CLImagePickerTool.framework,可是這個名稱和項目名稱重複了,這樣確定不行,可是我如今又不能去改項目名稱,你們都知道改項目名稱又會遇到不少問題,因此我這裏就很無奈的給framework起了另一個名字--ImagePickerTool.framework。說了這麼多,在哪設置名稱呢,看圖片吧!

屏幕快照 2017-08-31 下午9.21.38.png

4.再補充一個注意點!個人庫最低支持ios8,當你新建target後要檢查是否是也是最低支持ios8

屏幕快照 2017-08-31 下午9.31.52.png

5.分享target,勾選咱們的framework ,點擊close

屏幕快照 2017-08-31 下午9.11.12.png

屏幕快照 2017-08-31 下午9.23.21.png

6.下面開始測試咱們的framework庫是否是能夠用,先生成一個framework
進入咱們當前文件夾CLImagePickerTool,執行下面代碼,會生成一個carthage文件夾

carthage build --no-skip-current

屏幕快照 2017-08-31 下午9.28.54.png

7.新建一個項目,測試framework是否可使用,將上面生成的ImagePickerTool.framework,拖到項目中,
屏幕快照 2017-08-31 下午9.35.48.png

運行項目,若是沒有報錯就開始測試是否是已經引入了framework庫,

屏幕快照 2017-08-31 下午9.38.46.png

8.若是能夠用也沒有報錯,就說明這個framework就可使用的,下面就能夠經過Carghage來導入framework了。在這以前先把咱們的demo上傳到github,而且打一個新標籤

git commit -a -m 「......」
    git push 
    git tag 1.0.1   // 這個版本要和podspec中的version一致
    git push origin --tags   // 提交到遠端

9.測試carthage 。建議再建一個項目,在項目根目錄新建一個Cartfile文件,在裏面寫入

github "Darren-chenchen/CLImagePickerTool"

執行

carthage update

執行完成應該是下面的狀態

屏幕快照 2017-08-31 下午9.46.42.png

10.還須要手動添加一下framework庫。

屏幕快照 2017-08-31 下午9.48.07.png

屏幕快照 2017-09-01 上午10.27.37.png

再來講下我在這一步遇到的問題吧!由於個人庫也支持cocoapod,在cocoapod中若是要加載xib或者圖片,確定是要先找到後綴名爲.bundle的文件,然而carthage倒是要找後綴名爲.framework的文件,由於以前一直沒有處理這個問題,致使項目老是在xib的位置奔潰,下面就貼出來我針對carthage的處理

屏幕快照 2017-09-01 上午10.30.41.png

感謝您的閱讀,歡迎訪問個人github

相關文章
相關標籤/搜索