iOS本地項目依賴項(CocoaPods管理本地庫)

來源:互聯網
上載者:User

iOS本地項目依賴項(CocoaPods管理本地庫)

iOS做本地依賴項其實是比較麻煩的,做靜態庫.a和.framework,但是當你用靜態庫去訪問靜態庫的時候,你的程式就會報錯,而且版本管理麻煩。

然後我們就想到用cocoapods做依賴庫,由於是公司的代碼所以不能可能放到github上面去,所以就要求建立本地依賴庫。

首先,我們要安裝git和cocoapods

git安裝和使用就看這篇文章 http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

cocoapods的使用安裝就看這篇文章 http://code4app.com/article/cocoapods-install-usage

具體怎麼搭建這個環境就不細說了。

接下來申請一個github的帳號,找到頁面右上方 New repository


建立完成我們用git clone 到本地<喎?http://www.bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+PGJyPgo8L3A+CjxwPjwvcD4KPHByZSBjbGFzcz0="brush:java;">git clone https://github.com/codesourse/podtest.git

這裡我們要用到LICENSE 和git的版本管理

CocoaPods強制要求所有的Pods依賴庫都必須有license檔案,否則驗證不會通過。license的類型有很多種,詳情可以參考網站tl;dr Legal。在建立github倉庫的時候,我已經選擇了MIT類型的license。

然後我們要在該目錄下建立.podspec的檔案

該檔案為Pods依賴庫的描述檔案,每個Pods依賴庫必須有且僅有那麼一個描述檔案。檔案名稱要和我們想建立的依賴庫名稱保持一致,我的podtest依賴庫對應的檔案名稱為podtest.podspec。

podspec的檔案內容

Pod::Spec.new do |s|
s.name = "podtest"
s.version = "1.0.0"
s.summary = "A marquee view used on iOS."
s.description = <<-DESC
It is a marquee view used on iOS, which implement by Objective-C.
DESC
s.homepage = "https://github.com/wangzz/WZMarqueeView"
# s.screenshots = "www.example.com/screenshots_1", "www.example.com/screenshots_2"
s.license = 'MIT'
s.author = { "夏科傑" => "codesourse@gmail.com" }
s.source = { :git => '/Users/xiakejie/cocoapods/podtest', :tag => "1.0.0"}
# s.social_media_url = 'https://twitter.com/NAME'
s.platform = :ios, '4.3'
# s.ios.deployment_target = '5.1'
# s.osx.deployment_target = '10.7'
s.requires_arc = true
s.source_files = 'podtest/**/*.{h,m}'
# s.resources = 'Assets'
# s.ios.exclude_files = 'Classes/osx'
# s.osx.exclude_files = 'Classes/ios'
# s.public_header_files = 'Classes/**/*.h'
s.frameworks = 'Foundation', 'CoreGraphics', 'UIKit'
end


自解析:

 name: 匯入pod後的目錄名 version: 目前的版本號 deployment_target: 配置的target prefix_header_file: 先行編譯標頭檔路徑,將該檔案的內容插入到Pod的pch檔案內 source: 來源的具體路徑,是http連結還是本地路徑 requires_arc: 是否需要arc source_files: 指定該目錄下包含哪些檔案 其他選擇性參數還包括: dependency: 指定依賴,如果依賴的庫不存在或者依賴庫的版本不符合要求將會報錯 libraries: 指定匯入的庫,比如sqlite3 frameworks: 指定匯入的framework weak_frameworks: 弱連結,比如說一個項目同時相容iOS6和iOS7,但某一個framework只在iOS7上有,這時候如果用強連結,那麼在iOS7上運行就會crash,使用weak_frameworks可以避免這種情況。

整個podspec文法是一個嵌套結構從Pod::Spec.new do |s|到最後一個end是最大的迴圈,表示整個podspec匯入的檔案。中間每一個subspec到end結束是一個子目錄,Pods會為每個subspec建立一個邏輯目錄,相當於Xcode的group概念。|**|中間是subspec的名字,可以隨便命名,但後面使用的名稱必須一致。

萬用字元說明

a{bb,bc}def.{h,m}表示四個檔案abbdef.h abbdef.m abcdef.h abcdef.m

*.{h,m,mm}表示所有的.h .m .mm檔案
Class/**/*.{h,m}表示Class目錄下的所有.h .m檔案


配置完這個我們需要用git 打個tag,然後cocoapods打個tag最後拷貝到pod本地庫中


git tag 1.0.0

set the new tag to 1.0.0


pod lib lint

然後在你要依賴的項目中放入podfile,內容是

pod 'podtest', :podspec => '/Users/xiakejie/cocoapods/podtest/podtest.podspec'

最後我們只需要簡單一句pod install

如果這中間遇到

/Library/Ruby/Gems/2.0.0/gems/cocoapods-0.35.0/lib/cocoapods/user_interface/error_report.rb:13:in `report': incompatible character encodings: UTF-8 and ASCII-8BIT (Encoding::CompatibilityError)
from /Library/Ruby/Gems/2.0.0/gems/cocoapods-0.35.0/lib/cocoapods/command.rb:58:in `report_error'
from /Library/Ruby/Gems/2.0.0/gems/claide-0.7.0/lib/claide/command.rb:300:in `handle_exception'
from /Library/Ruby/Gems/2.0.0/gems/claide-0.7.0/lib/claide/command.rb:274:in `rescue in run'
from /Library/Ruby/Gems/2.0.0/gems/claide-0.7.0/lib/claide/command.rb:264:in `run'
from /Library/Ruby/Gems/2.0.0/gems/cocoapods-0.35.0/lib/cocoapods/command.rb:45:in `run'
from /Library/Ruby/Gems/2.0.0/gems/cocoapods-0.35.0/bin/pod:43:in `'
from /usr/bin/pod:23:in `load'
from /usr/bin/pod:23:in `'

那就看這篇文章吧

http://www.tuicool.com/articles/iaqU3im


我們的依賴項目就製作完成

參考

http://blog.csdn.net/djl4104804/article/details/25408395

http://www.iwangke.me/2013/04/18/advanced-cocoapods/

http://guides.cocoapods.org/using/the-podfile.html



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.