前言
現(xiàn)在的項(xiàng)目完全是用組件化的思路開(kāi)發(fā)的,也是借此機(jī)會(huì)親自實(shí)現(xiàn)了一把。
項(xiàng)目里的每個(gè)業(yè)務(wù)模塊都是使用cocoapods 私有庫(kù)開(kāi)發(fā),依賴下層開(kāi)發(fā)或者二次封裝的私有庫(kù)。這里先介紹一下我的私有庫(kù)使用案例。
私有庫(kù)創(chuàng)建
我項(xiàng)目里的功能模塊都是用的官方的私有庫(kù)模版。跑如下命令
pod lib create __ProjectName__
然后根據(jù)一系列提示定制你的私有庫(kù)配置.
編輯 .podspec 文件
-
s.name就是你私有庫(kù)的名稱 -
s.version你的私有庫(kù)版本 -
s.summary簡(jiǎn)單的介紹 -
s.description描述,要比上面一項(xiàng)文字長(zhǎng)一點(diǎn)哦 -
s.source代碼, git 地址,以及版本(或指定分支) -
s.ios.deployment_target支持iOS 版本 -
s.source_files私有庫(kù)的源文件'Pods/Classes/**/*',**表示匹配一層或多層目錄,*匹配任何類型文件. -
s.public_header_files暴露的頭文件 -
s.resource_bundles資源文件存放路徑 -
s.frameworks私有庫(kù)所需要引用的系統(tǒng)庫(kù) -
s.vendored_libraries引用第三方靜態(tài)庫(kù) , 自己引入的.a文件 -
s.dependency依賴的其他第三方pod庫(kù) -
s.pod_target_xcconfig指定target添加配置
下面給出我的一個(gè) podspec 文件樣例
Pod::Spec.new do |s|
s.name = 'musicXML'
s.version = '0.1.6'
s.summary = 'musicxml for piano to play'
s.description = 'draw music sheet and play sound according to musicXML'
s.homepage = 'https://gitlab.oneitfarm.com/SpecPods/MusicXML'
s.license = { :type => 'MIT', :file => 'LICENSE' }
s.author = { 'yourName' => 'your@email.com' }
s.source = { :git => 'your git address', :tag => s.version.to_s } #指定version
s.ios.deployment_target = '8.0'
s.source_files = ['Pod/Classes/**/*','Pod/musicFramework/**/*.{cpp}']
s.resource_bundles = {
'musicXML' => ['Pod/Assets/*.xib','Pod/Assets/*.png',
'Pod/Assets/*.dls','Pod/Assets/*.xcassets'
]
}
s.xcconfig = { 'HEADER_SEARCH_PATHS' => 'Pod/MusicFramework/**/*.h'}
s.public_header_files = 'Pod/Classes/**/*.h'
# s.vendored_frameworks = 'Pod/MusicFramwork.framework'
s.frameworks = 'UIKit', 'MapKit','AVFoundation','AudioToolbox','CoreAudio','CoreBluetooth'
s.vendored_libraries = 'Pod/libraries/*.a'
s.dependency 'MBProgressHUD'
s.dependency 'CIRouter','0.0.3'
s.dependency 'CIProgressHUD','0.2.0'
s.dependency 'Moya','8.0.5'
s.dependency 'Moya/RxSwift','8.0.5'
s.dependency 'RxSwift','3.6.1'
s.dependency 'SwiftyJSON','3.1.4'
s.dependency 'CIUtilS'
s.pod_target_xcconfig = { 'SWIFT_VERSION' => '3.2' }
end
添加該項(xiàng)目到你的倉(cāng)庫(kù)
pod repo add __ProjectName__ Project_Git_Address
驗(yàn)證私有庫(kù)
pod lib lint ProjectName.podspec
跑上面的命令時(shí)可能會(huì)遇到各種報(bào)錯(cuò)
-
warning導(dǎo)致失敗,添加--allow-warnings -
SomePod not Found依賴的其他私有庫(kù)未找到,添加--sources="SomePod's Git Address,https://github.com/CocoaPods/Specs.git" -
--verbose添加這個(gè)選項(xiàng)會(huì)有更多的打印,主要是為了看錯(cuò)誤
推送
當(dāng)本地lint成功后,就可以將該版本推到的你倉(cāng)庫(kù)中
pod repo push __PodName__ --allow-warnings --allow-warnings
注意,lint 命令中添加的參數(shù),push 時(shí)也要添加