iOS 開發 - 親身經歷告訴你如何把自己的庫通過pod導入(詳細步驟)


https://blog.csdn.net/CodingFire/article/details/52470802

2016年09月08日 13:55:30 CodingFire 閱讀數:9008

 

通過CocoaPods 將storyboards、xibs和資源文件打包到iOS framework

https://blog.csdn.net/willib/article/details/53190269

 

版權聲明:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/CodingFire/article/details/52470802

記得一次面試有人問我有沒有自己開源一些庫,有是有的,但是確沒有制作成可以通過pods導入的庫,此乃一大憾事,后來跟着網上很多教程在那里搗鼓了半天,真的是半天時間,壓根沒用,今天無意間看到一篇博客,http://www.jianshu.com/p/489520b69d8b,參考了一下,有用,但並不是最正確的,里面有許多你不知道的坑等着你在跳,按照上面的步驟,基本和我以前看的一樣,最后還是不行,經過倆小時的摸索,根據一些報錯來查找原因,最后終於解決了這個問題,下面是博主剛剛創建的庫: 

這里寫圖片描述

如果想要看具體功能可以看:https://github.com/codeliu6572/CustomAlertView

在看這個功能前,確定你會上傳自己的項目代碼到github,不會的可以看博主的文章:http://blog.csdn.net/codingfire/article/details/50387183 

下面來介紹下如何把自己的庫制作成可以通過pod導入的庫: 

上面那篇博客中的內容可以看下,為了保證正確,博主就重新在下面寫命令:

1.用戶名郵箱注冊,為github的用戶名和綁定郵箱(下面的內容替換為自己的):

pod trunk register codeliu6572@163.com 'codeliu6572' --verbose 

 

如果報錯,一般是pod版本低或者ruby的版本低,這里不再說明解決辦法,自行百度。

2.查看是否注冊成功

pod trunk me  

這里寫圖片描述

這樣的就代表注冊成功。

3.創建 .podspec文件 

這里一定要在工程中創建 .podspec文件,並把庫文件放在一個文件中,看一下博主的: 

這里寫圖片描述

LICENSE文件(必不可少)和README.md文件都要有,且必須和庫文件放在一個目錄。 

創建方法:

pod spec create LHHAlertView

可以通過vim來打開文件操作,博主一般用電腦的文本編輯打開,打開后看到的內容有很多,博主只保留了基本的信息,如下:

//特別說明,里面的注釋是博主為了大家知道什么意思加的,實際使用時一定要去掉

Pod::Spec.new do |s|

//文件名

s.name = 'LHHAlertView'

//版本

s.version = '1.0.1'

//描述信息

s.summary = 'A view like UIAlertView on iOS.'

//這里的主頁自己隨便寫

s.homepage = 'http://blog.csdn.net/codingfire' 

//作者

s.authors = { 'codeliu6572' => 'codeliu6572@163.com' }

//資源路徑

s.source = { :git => 'https://github.com/codeliu6572/CustomAlertView.git', :tag => '1.0.1' }

//ARC模式

s.requires_arc = true

//license,一般我們用MIT

s.license = 'MIT'

//允許的最低系統使用版本

s.ios.deployment_target = '7.0'

//庫文件路徑

s.source_files = 'LHHAlertView/*'

end

因為這里沒有第三方庫和系統庫的引入,下面有個新的格式:

這里是博主提交的新的庫,供大家參考,每次通過編輯器打開修改時引號

都會改變,需要注意,所以每次都需要重新復制正確的引號來替換變更

的,小修改可以用vim打開,這樣引號就不會變了,升級版本時,需要打

tag,記得從打tag那一步開始,第一次會輸入賬號密碼,以后會提示授

權,允許即可。每次修改后記得一定要同步到github再繼續下一步操

作。

 

 

除了下面的一些資源文件導入外,還有第三方的支持,xib等的支持,詳細信息請查看:https://guides.cocoapods.org/syntax/podspec.html#specification

//特別說明,里面的注釋是博主為了大家知道什么意思加的,實際使用時一定要去掉

Pod::Spec.new do |s|

 

  s.name         = 'LHHTopScrollView'

  s.version      = '1.0.5'

  s.summary      = 'A banner for iOS.'

 

  s.homepage     = 'http://blog.csdn.net/codingfire/article/details/52470802'

 

 

 

  s.license      = "MIT"

 

  s.ios.deployment_target = '7.0'

  s.author       = { 'codeliu6572' => 'codeliu6572@163.com' }

 

  s.source       = { :git => 'https://github.com/codeliu6572/ScrollVIewBanner.git', :tag => '1.0.5' }

 

 

 

  s.source_files  = "LHHTopScrollView/*.{h,m}"

 

 

  s.resources = "LHHTopScrollView/*.png"

如果有多個,后面加逗號隔開如: 'UIKit', 'XXXXXX'

  s.framework  = 'UIKit'

  s.requires_arc = true

 

  s.dependency 'SDWebImage'

 

end

這里s.source的git地址看下圖: 

這里寫圖片描述

另外這里再說一個坑: 

這里寫圖片描述

這里的單引號注意看了,是不一樣的,下面的很明顯能看出來和上面圈起來的不同,用上面的那種,博主試了下,打不出來,那就復制,否則報錯,編輯通不過。切記!!!

4.驗證編輯是否通過

pod lib lint LHHAlertView.podspec

 

這里寫圖片描述 

以上為通過截圖,只要按照博主的步驟來,這一步肯定可以通過的。

后來博主在使用時又報錯了,信息如下:

- ERROR | [iOS] xcodebuild: Returned an unsuccessful exit code. You can use `--verbose` for more information.

- ERROR | xcodebuild:  /Users/Codeliu/Desktop/程序/VoiceLight/LHHVoiceLight/VoiceLight.h:11:9: error: 'Masonry.h' file not found with <angled> include; use "quotes" instead

第一個錯誤博主怎么找也沒找到,最后查找到原因是因為博主創建文件時第一次創建錯了,把繼承與NSObject的類手動改成了UIView,重新創建后不再報錯;

第二個錯誤是因為Masonry在引入時系統提示我這么引入#import <Masonry.h>,應該是#import "Masonry.h",但是這樣系統報錯,這是因為pods的緣故,build setting->ALways Search User Path ,設置為YES即刻。

 

5.打上tag,並提交到github

這里打tag一定要加上v,否則會出錯 

事實證明這里加不加v都沒關系,但是有一點,tag一定要和podspec文件中的tag一模一樣。至於有其他的寫法,博主嘗試過但是有問題,也許還有沒嘗試的,就不亂下結論了,按照博主提供的方法來寫不會有錯。

git tag 'v1.0.1'

git push --tags

 

tag打錯了並已提交的

git tag -d xxx    //刪除本地tag

接着

git push origin --delete tag xxx  //刪除遠程tag,然后重新打tag

 

提交時會提示輸入賬號密碼,按照自己的github的賬號密碼來輸入。

成功后: 

這里寫圖片描述

6.把podspec文件提交到github的庫倉庫中

 

pod trunk push LHHAlertView.podspec  

//如果有警告 后面加 --allow-warnings

 

這一步有可能會因為pods版本低而失敗,根據提示信息更新pods

成功后截圖: 

這里寫圖片描述

7.搜索提交的庫

pod search LHHAlertView

 

然后就看到一開始的那張圖了。

這里再啰嗦幾句,以博主的這個Demo為例,Demo里面已經有了庫文件,但是在Demo同等級的目錄中依然要放一個庫文件,目前博主成功的文件目錄就是這樣的,podspec文件一定要和庫文件在一個目錄中,其他注意事項每一步都有介紹,一定要注意。

總結:要把自己的庫制作成通過pods導入還是有一定難度的,網上很多方法看着跟博主這里差不多,其實命令都一樣,但是卻有明顯的不同,那就是細節部分,比如引號,打tag時的v,目錄結構等等,稍有不慎就可能通不過編輯,就說這么多,如果遇到問題,歡迎加群討論。

后來遇到的坑: 

1.通過代碼創建的podspec文件里面都是雙引號,博主用的都是單引號,經測試,無影響,還有UIKIT等庫和第三方庫的引入,以及版本升級,這一部分已經放在這里; 

2.發現一個問題,如果你在某個庫中用了NSInteger,會報警告,原因是:typedef long NSInteger;類似這種情況的還有別的,如果遇到你可以替換成像這里應該是long,也可以選擇忽略警告,比如:pod trunk push ScrollSliderView.podspec –allow-warnings; 

3.有時候在push時會遇到這樣的報錯:[!] There was an error pushing a new version to trunk: Net::OpenTimeout 不要驚慌,僅僅是因為網絡不好沒有push成功,不妨再試一次。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM