日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

iOS 玩转CocoaPods

發(fā)布時(shí)間:2023/12/6 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iOS 玩转CocoaPods 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

####導(dǎo)語(yǔ):

有時(shí)候看到其他人 source開(kāi)源時(shí)候用pod xxx 配置在你的Podfile文件中,執(zhí)行下pod install 或者 pod update ,代碼瞬間就到你的pod庫(kù), 頓時(shí)覺(jué)得高大上。那是怎么做到的呢?

Agenda:

  • CocoaPods 的由來(lái)
  • Github 使用
  • PodSpec介紹
  • PodSpec上傳
  • 遇到的坑及解決方案

###一,CocoaPods 的由來(lái) Android app目前通過(guò)gradle來(lái)管理和配置你的source,比如需要用到Eventbus只要在build.gradle中配置下

dependencies {compile 'org.greenrobot:eventbus:3.0.0' } 復(fù)制代碼

iOS必須要有類(lèi)似的神器啊:CocoaPod就是這把神器. 在CocoaPod沒(méi)出來(lái)之前iOS要用引用第三庫(kù)的做法如下: 比如引用AFNetWorking庫(kù),需要去下載源碼,然后需要配置對(duì)應(yīng)的編譯環(huán)境等。當(dāng)AFNetWorking庫(kù)升級(jí),所有過(guò)程又來(lái)一遍。過(guò)程太過(guò)復(fù)雜啦。 CocoaPods因上面的原因應(yīng)運(yùn)而生,它目前是iOS最有名的類(lèi)庫(kù)管理工具了,通過(guò)cocoaPods,只需要一行命令就可以完全解決,當(dāng)然前提是你必須正確設(shè)置它。目前絕大部分有名的開(kāi)源類(lèi)庫(kù),都支持CocoaPods。所以,作為iOS程序員的我們,掌握CocoaPods的使用是必不可少的基本技能了。

如果你mac上沒(méi)有安裝pod , sudo gem install cocoapods 具體怎么安裝可以參考如下鏈接: http://www.jianshu.com/p/9e4e36ba8574

開(kāi)發(fā)iOS應(yīng)用用到pod 的主要命令如下:

pod help-->查看pod命令的幫助 pod search --> Search for pods(搜索pod) pod trunk --> Interact with the CocoaPods API (e.g. publishing new specs) 上傳source到trunk pod spec --> Manage pod specs//管理pod spec pod install -->Install project dependencies according to versions from a Podfile.lock //安裝項(xiàng)目中的依賴(lài)項(xiàng)目 pod update -->Update outdated project dependencies and create new Podfile.lock//跟新依賴(lài)項(xiàng)目并且更新Podfile.lock pod init -->Generate a Podfile for the current directory//創(chuàng)建pod file文件 復(fù)制代碼

其中Podfile.lock的扮演的角色非常重要,具體作用可以參考如下鏈接 http://m.blog.csdn.net/muzhenhua/article/details/45174071

####二,Github 使用 為嘛要介紹GitHub呢?CocoaPods只是做為項(xiàng)目的具體管理者,podspec文件就放在cocoapod官網(wǎng)上,供大家搜索。但是實(shí)際源碼則是存儲(chǔ)在Github上,那怎么使用Github就非常關(guān)鍵啦。

  • 創(chuàng)建項(xiàng)目 登錄你的Github,然后去創(chuàng)建一個(gè)新的倉(cāng)庫(kù),如下圖創(chuàng)建GKFramework參考

  • 上傳項(xiàng)目 下載該倉(cāng)庫(kù),通過(guò)git clone 。clone一個(gè)倉(cāng)庫(kù)下來(lái) 怎么clone如下圖clone with https.

在終端輸入

//git clone后面的是你對(duì)應(yīng)的git 地址 git clone https://github.com/wongstar/GKFramework.git復(fù)制代碼

然后在這個(gè)倉(cāng)庫(kù)中修改或者添加你需要對(duì)應(yīng)類(lèi)或者文件等。

然后通過(guò)下面命令

//add 所有的到倉(cāng)庫(kù) git add * //提交commit信息 git commit //提交本地到遠(yuǎn)端 git push origin master 復(fù)制代碼
  • 打tag tag是后續(xù)spec中需要用到,以后升級(jí)至需要升級(jí)對(duì)應(yīng)tag.
//獲取當(dāng)前有多少tag git tag //創(chuàng)建tag 0.0.1版本 git tag 0.0.1 復(fù)制代碼
  • update tag到Github上 上傳tag到Github服務(wù)器上,這個(gè)比較簡(jiǎn)單
git push origin 0.0.1 復(fù)制代碼
  • 查看tag 如下圖所示 :點(diǎn)擊branch 然后查看Tags欄目

至此源碼已經(jīng)上傳到Github服務(wù)器上去了,但是Pod服務(wù)器上目前還沒(méi)有對(duì)應(yīng)的描述,下面接著介紹PodSpec,以及如何上傳到cocoapod服務(wù)器上去. ####三,PodSpec介紹

在mac 上創(chuàng)建一個(gè)podspec,在Terminal終端上輸入下面命令:

//注GKFramework.podspec是你的框架名稱(chēng) pod spec create GKFramework.podspec 復(fù)制代碼

然后編輯podspec文件。如下GKFramework.podspec

Pod::Spec.new do |s|s.name = "GKFramework" //定義名稱(chēng)s.version = "0.0.5" //tag版本s.summary = "A Sample.so you can use it" //簡(jiǎn)介,以后search到簡(jiǎn)介s.description = <<-DESCthis is gk framework, use it for test your framework. we can use it as framework.DESC //s.description 定義具體的描述s.homepage = "https://github.com/wongstar/GKFramework"s.license = { :type => "MIT", :file => "LICENSE" }//具體licenses.author = { "wongstar" => "wongstar.iac@gmail.com" }s.platform = :ios, "8.0"//build的平臺(tái)s.ios.deployment_target = "7.0"//最低開(kāi)發(fā)s.source = { :git => "https://github.com/wongstar/GKFramework.git", :tag => "#{s.version}" }s.source_files = 'Classes/**/*'#s.public_header_files='GKFramework/Classes/**/*.h'end復(fù)制代碼 s.description = <<-DESCthis is gk framework, use it for test your framework. we can use it as framework.DESC s.description定義了描述該pod是用來(lái)做什么的。注意這里的寫(xiě)法復(fù)制代碼

s.description格式要求必須是下面的這樣描述 <<-DESC 這里面你定義的描述.必須用這個(gè)格式 DESC

s.source = { :git => "https://github.com/wongstar/GKFramework.git", :tag => "#{s.version}" } 復(fù)制代碼

必須定義s.source,git鏈接必須是你上傳過(guò)的source, tag定義為你在github上對(duì)source打的tag.

s.source_files = 'Classes/**/*' 定義為:Classes目錄下的所有文件 復(fù)制代碼s.dependency:依賴(lài)庫(kù),不能依賴(lài)未發(fā)布的庫(kù) eg: s.dependency = 'AFNetworking' 復(fù)制代碼

####四,PodSpec上傳

  • 在 cocoapods 注冊(cè)
//email代表你的email,username代表你的用戶名pod trunk register email "username" 復(fù)制代碼

執(zhí)行完上面的命令,你的郵箱會(huì)收到一封確認(rèn)信,點(diǎn)擊確認(rèn)驗(yàn)證一下就ok啦。

  • 判斷podspec正確行?
//GKFramework.podspec為你對(duì)應(yīng)的podspec文件 pod spec lint GKFramework.podspec 復(fù)制代碼

如果是正確的spec會(huì)出現(xiàn)下面的提示:

  • 上傳到cocoapod服務(wù)器
//注:GKFramework.podspec為你對(duì)應(yīng)spec的名稱(chēng) pod trunk push GKFramework.podspec 復(fù)制代碼

上傳成功如下圖所示:

  • search 你的庫(kù). 網(wǎng)址為:https://cocoapods.org/ 如圖五:search GKFramework ####五,遇到的坑及解決方案
  • source file沒(méi)找到 [iOS] file patterns: The source_files pattern did not match any file. 確保你的source file是否配置正確,如你的spec目錄和source對(duì)應(yīng)的關(guān)系
  • cocoapods環(huán)境問(wèn)題 unknown: Encountered an unknown error (Simulator iPhone 4s is not available.) during validation 執(zhí)行下面命令
sudo gem install cocoapods --pre 復(fù)制代碼

如果執(zhí)行上面的有問(wèn)題出現(xiàn) ERROR: While executing gem ... (Errno::EPERM) Operation not permitted - /usr/bin/xcodeproj 執(zhí)行下面命令

sudo gem install -n /usr/local/bin cocoapods 復(fù)制代碼
  • Swift 版本問(wèn)題 [!] The validator for Swift projects uses Swift 3.0 by default, if you are using a different version of swift you can use a .swift-version file to set the version for your Pod. For example to use Swift 2.3, run:
echo "2.3" > .swift-version. 復(fù)制代碼

驗(yàn)證失敗,會(huì)出現(xiàn)一系列錯(cuò)誤,但也不是無(wú)根可尋,其中出現(xiàn)錯(cuò)誤頻率最多的提示是

  • source files沒(méi)找到 ERROR | [iOS] file patterns: The source_files pattern did not match any file.

此錯(cuò)誤的原因是沒(méi)有找到匹配的文件。

解決方案: 手動(dòng)創(chuàng)建文件,具體操作方法如下 終端輸入: open /Users/icepoint/Library/Caches/CocoaPods/Pods/External/GKFramework/035cb9aa62b9d49f904fad1119b83da4-aebfe 進(jìn)入相應(yīng)文件夾,創(chuàng)建文件夾與source_files文件路徑對(duì)應(yīng) GKFramework/GKFramework/Classes 文件結(jié)構(gòu)如下: GKFramework └── 035cb9aa62b9d49f904fad1119b83da4-aebfe
├── GKFramework │ └── GKFramework │ └──Classes └── LICENSE #開(kāi)源協(xié)議 默認(rèn)MIT

Classes文件夾存放自己的庫(kù)文件

  • pod search GKFramework 搜索不到 Unable to find a pod with name, author, summary, or description matching GKFramework. 解決辦法: 1.pod install --repo-update 2.或者全部刪除:使用命令:rm ~/Library/Caches/CocoaPods/search_index.json 重新search GKFramework

總結(jié)

以上是生活随笔為你收集整理的iOS 玩转CocoaPods的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。