如何創(chuàng)建私有 CocoaPods 倉(cāng)庫(kù)
使用私有Cocoapods倉(cāng)庫(kù)的中高級(jí)用法
1.podspec文件:
Pod::Spec.new do |s|
s.name = "HHO2View"
s.version = "0.1.2"
s.summary = "HHO2View."
s.description = "纖細(xì)描述稠鼻,哈哈哈哈"
s.homepage = "https://github.com/huanghuacaiCoder/HHO2View"
s.license = "MIT"
s.author = { "huanghuacai" => "285210549@qq.com" }
s.platform = :ios, '9.0'
s.source = { :git => "https://github.com/huanghuacaiCoder/HHO2View.git", :tag => "#{s.version}" }
s.source_files = "Classes/**/*.{h,m}"
s.resource = "Classes/HHImage.bundle"
s.preserve_paths = "Classes/**/*.a"
s.vendored_libraries = "Classes/**/*.a"
s.requires_arc = true
s.dependency 'AFNetworking', '~> 2.3'
s.dependency 'CocoaAsyncSocket', '~>7.5.0'
s.subspec 'Category' do |cs|
cs.source_files = 'Classes/Category/**/*.{h,m}'
end
end
2.podspec文件介紹
* name 類庫(kù)的名稱
* version 指定版本
* license 開源協(xié)議
* description 簡(jiǎn)單描述
* homepage 個(gè)人主頁(yè)
* author 作者信息
* source 指定git地址
* platform 指定iOS版本
* requires_arc 指定支持arc
* vendored_frameworks 本地的frameworks
* frameworks 指定需要使用的系統(tǒng)frameworks
* preserve_paths 本地的.a庫(kù)
* vendored_libraries: 第三方.a文件
* source_files 指定類庫(kù)中的源碼
需要在source_files中指定要發(fā)布的源代碼文件,這個(gè)項(xiàng)目的源代碼都是在pod-library目錄下面穿撮,因此我指定了獲取pod-library目錄下的所有的.h和.m文件
如果你需要使用swift就需要指定目錄下面的.swift文件,如果有c++源代碼的還需要指定.mm文件。
* resources 指定的資源在調(diào)用類庫(kù)的項(xiàng)目中可以直接調(diào)用上真,和調(diào)用項(xiàng)目?jī)?nèi)的資源一樣。
* resource_bundles 把需要調(diào)用的資源編譯到bundle來(lái)調(diào)用羹膳,
3.podfile文件:
target 'Test1' do
source 'https://github.com/huanghuacaiCoder/HHSpecs.git'
source 'https://github.com/CocoaPods/Specs.git' #官方倉(cāng)庫(kù)的地址
use_frameworks!
pod ‘HHO2View’
end
4.常用終端命令
生成公私鑰對(duì):ssh-keygen
查看第三方框架倉(cāng)庫(kù)源:pod repo
本地下載私有倉(cāng)庫(kù)索引:pod repo add REPO_NAME SOURCE_URL
pod spec create 描述文字名稱
pod init 生成一個(gè)podfile文件
在cocoapods注冊(cè) pod trunk register 18811108252@163.com 'huanghuacai' --verbose
pod trunk push testLib.podspec
驗(yàn)證podspec也可手動(dòng)執(zhí)行命令pod spec lint XPRACSignal.podspec
更新pod到最新版本 sudo gem install cocoapods
git tag '0.0.1'
git push --tags
git push origin master
pod lib lint
pod repo push HHSpecs HHO2View.podspec
5.遇到的問(wèn)題:
1).當(dāng)前工程依賴的工程是私有庫(kù)睡互,pod lib lint于是會(huì)報(bào)錯(cuò):
ERROR | [iOS] unknown: Encountered an unknown error (Unable to find a specification for `XXX (~> 0.1.0)` depended upon by `ZZZ`) during validation.
原因:
校驗(yàn)podspec文件時(shí)會(huì)到遠(yuǎn)程podspec庫(kù)查找相關(guān)依賴,默認(rèn)只會(huì)到官方specs庫(kù)校驗(yàn)陵像,此時(shí)需要指定遠(yuǎn)程specs庫(kù)去校驗(yàn)就珠。
解決:
指定pod spec文件校驗(yàn)地址
pod lib lint --sources='私有索引庫(kù)路徑,https://github.com/CocoaPods/Specs.git'
2).依賴一個(gè)庫(kù),pod lib lint時(shí)報(bào)錯(cuò)
- NOTE | xcodebuild: /var/folders/fr/dlrxq7_j6t1fgl072c_dwssm0000gn/T/CocoaPods/Lint/App/main.m:3:9: fatal error: could not build module 'ZOiOSTools'
解決辦法:
pod lib lint xxx.podspec --use-libraries
注意:push的時(shí)候必須要也要加這個(gè)后綴醒颖,否則也會(huì)報(bào)該錯(cuò)誤
pod repo push Specs ZOiOSTools.podspec --use-libraries
3).如果代碼代碼中有過(guò)期的API妻怎,那么pod lib lint時(shí)會(huì)報(bào)警告
解決辦法有兩種,第一種去解決警告泞歉,第二種
pod lib lint --allow-warnings
pod repo push Specs ZOiOSTools.podspec --use-libraries --allow-warnings
4).Returned an unsuccessful exit code. You can use --verbose
for more information.
pod lib lint --verbose
5). fatal error: 'UIKit/UIKit.h' file not found 出現(xiàn)與這個(gè)類似的錯(cuò)誤是因?yàn)樵趐odspec文件中沒(méi)有加
s.platform = :ios