CocoaPods 复习
2020-06-02 本文已影响0人
清無
Podfile
source
指定所有pod所在的索引仓库,如source 'https://github.com/CocoaPods/Specs.git'
pod
参数1
版本号
- '>','>='
- '具体版本'
- '~>' 区间版本,比如'~> 3.7.4'就是[3.7.4, 3.8.0)
参数2
仓库地址或路径
- :git => 'https://github.com/xxx.git'(远程)
- :path => '~/Documents/xxx'(本地)
参数3
标签号、提交号、分支
- :tag => '0.1.0'
- :branch => 'beta'
- :commit => 'ab2sdf3ds'
参数4
忽略警告
- inhibitallwarnings!
platform
平台
- platform :ios/macOS/tvOS/watchOS, '9.0'
target
编译项目
target "ShowsApp" do
pod 'ShowsKit'
target "ShowsTV" do
pod "ShowTVAuth"
end
end
use_frameworks!
编译指定为动态库
Pod命令
pod install
安装Podfile.lock中锁定的对应版本仓库
pod update
更新Podfile中的所有pods
--verbose
打印详细安装信息,与--silent对应
--no-repo-update
不会更新本地specs索引文件,提高速度
开源
.podspec
Pod::Spec.new do |s|
s.name = "iOS-Echarts"
s.version = "1.1.4"
s.summary = "A custom component for the ecomfe's echarts."
s.homepage = "https://github.com/Pluto-Y/iOS-Echarts"
s.license = { :type => "MIT", :file => 'LICENSE.md' }
s.author = { "PlutoY" => "kuaileainits@163.com" }
s.platform = :ios, "7.0"
s.source = { :git => "https://github.com/Pluto-Y/iOS-Echarts.git", :tag => s.version}
s.frameworks = 'UIKit'
s.source_files = "iOS-Echarts/**/*.{h,m}"
s.resource = "iOS-Echarts/Resources/**"
s.requires_arc = true
s.subspec 'Security' do |ss|
ss.source_files = 'AFNetworking/AFSecurityPolicy.{h,m}'
ss.public_header_files = 'AFNetworking/AFSecurityPolicy.h'
ss.frameworks = 'Security'
end
end
pod lib create xxx
创建pod仓库xxx
pod lib lint xxx *.podspec
验证.podspec是否配置正确
- --allow-warnings
- --use-libraries(包含第三方静态库)
- --use-frameworks(包含第三动态库)
- --sources='xxxspec.git,xxx2spec.git'(引用了三方库)
pod trunk push xxx.podspec
推送到github
pod repo push xxx xxx.podspec
推送到私有仓库(自动推送到关联的远端)
组件化
pod repo add xxx xxxSpec.git
添加远程仓库索引到本地,路径在
~/.cocoapods/repos/xxx
- 注意点:
- 模块中不能出现循环依赖,即A依赖B,B依赖C,C依赖A的情况
- 如果一个子模块引用,需要填写完整的模块名,如在Core模块下面有Controller模块下面有个Setting模块,并且整个库的名字为TestProj的话,则依赖的名称需要这样写
s.dependency 'TestProj/Core/Controller/Setting'
的形式 - 如果出现模块特别多的情况下,在验证过程中,尽量采用
--subspec=子模块名
来进行一个模块一个模块验证,特别是对于如果只改动了一个模块的情况下,这里所说的字模块名也和上面一点异样,要填写完整的模块名 - 在写私有库的过程中,尽量不用prefix header的形式,因为在分子模块的过程中很容易出现忘记引用header而出现的Error