更好的閱讀體驗,歡迎訪問個人博客html
關於組件化,目前比較流行的方案大概有三種:
Router
,Protocol
,Target-Action
。 不管是選擇哪種方案,都須要經過創建私有Pod來管理項目。本文但願經過創建一個組件化中經常使用的Base庫能將這個事情講清楚。ios
選擇合適的本地路徑建立modularization
文件夾 其中的podspec包含了這個庫的信息(包括名稱,版本和描述等).
下面是官方定義:git
A specification describes a version of Pod library. It includes details about where the source should be fetched from, what files to use, the build settings to apply, and other general metadata such as its name, version, and description.
一個描述各個版本Pod庫的規範。它包括關於應該從何處獲取源碼、使用到的文件、應用構建設置以及其餘通用元數據(如其名稱、版本和描述)的詳細信息。github
cd Base
pod lib create Base
複製代碼
建立時會須要回答幾個問題 ruby
用編輯器打開Base.podspec
文件,把咱們庫的信息填寫到podspec
中去。
務必每一項都要填寫正確,如s.homepage,s.source中的連接要可以正常訪問app
Pod::Spec.new do |s|
s.name = 'Base'
s.version = '0.0.1' # 這裏的version要與git操做中的tag相一致,由於目前Base庫中尚未代碼,故此我把version設爲0.0.1
s.summary = 'iOS組件化中Base組件:主要存放項目中無關業務的基礎組件'
s.description = <<-DESC TODO: Add long description of the pod here. DESC
s.homepage = 'https://github.com/Wrapperss/Base.git'
# s.screenshots = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
s.license = { :type => 'MIT', :file => 'LICENSE' }
s.author = { 'Wrappers' => 'zhanglive@outlook.com' }
s.source = { :git => 'https://github.com/Wrapperss/Base.git', :tag => s.version.to_s }
# s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'
s.ios.deployment_target = '8.0'
s.source_files = 'Base/Classes/**/*'
# s.resource_bundles = {
# 'Base' => ['Base/Assets/*.png']
# }
# s.public_header_files = 'Pod/Classes/**/*.h'
s.frameworks = 'UIKit', 'MapKit'
s.dependency 'AFNetworking', '~> 2.3' #依賴的其餘庫
end
複製代碼
cd Base
pod lib lint
複製代碼
私有庫也須要單獨一個Repository
來存儲咱們的代碼,就像RxSwfit。
此處用Github的私有庫爲例,通常建立在公司的GitLab上。
編輯器
git remote add origin https://github.com/Wrapperss/Base.git
git push -u origin master
複製代碼
注意:Tag必須與以前在podspec中填寫的version一致,這裏咱們是0.0.1 ide
pod repo add WSpecs https://github.com/Wrapperss/WSpecs.git
複製代碼
查看本地中open ~/.cocoapods/repos
在repos
中兩個文件夾(Master,WSpces),其中中WSpces就是咱們新建立的。組件化
pod repo push WSpecs Base.podspec
複製代碼
在Podfile
中加入測試
source 'https://github.com/CocoaPods/Specs.git' #公開的
source 'https://github.com/Wrapperss/WSpecs.git' #私有的
pod 'Base', :git=>'https://github.com/Wrapperss/Base.git' #可使用私有庫了!
複製代碼