写好podspec才能用好cocoapods
创建一个Podspec文件
pod spec create howTo
此命令产生一个howTo.podSpec的文件,里面的内容已经很丰富,并且有都有注释说明,自行研究一下,我来补充一些里面没有提及的东西。
subspec的用法
不使用subspec的时候,通过pod到工程的所有代码文件都是放在一个目录下的,而subspec则可以避免这种状况,使用它是有很多好处的,比如:
- 每一个subspec会生成一个文件夹,将代码和资源文件放入其中。
- 可以按照需求,将不同的模块放在不同的subspec下,清晰明了。
- subspec可以独立加载。
- subspec之间可以互相依赖。
完整示例如下,s
为上级spec的别名.
- 1.使用
s.subspec 'AA' do |aa|
创建下级spec,aa
为别名。 - 2.使用
aa.source_files
给定一个或多个路径,注意与代码库实际路径一致。 - 3.使用
to.dependency
依赖其他subspec或者其他第三方库。 - 4.上级spec可以不关联指定代码,而直接关联一个subspec。
Pod::Spec.new do |s|
s.name = "howTo"
s.version = "0.0.1"
s.summary = "A short description of howTo."
s.description = <<-DESC
DESC
s.homepage = "http://EXAMPLE/howTo"
s.license = "MIT (example)"
s.author = { "huachen" => "huachen206@163.com" }
s.source = { :git => "http://EXAMPLE/howTo.git", :tag => "0.0.1" }
s.default_subspec = 'Core'
s.subspec 'Core' do |core|
core.source_files = 'HTCore/*.{h,m}','HTCore/Classes/*.{h,m}','HTCore/CommonCategory/*.{h,m}''
end
s.subspec 'HTOne' do |to|
to.source_files = 'HTOne/*.{h,m}'
to.resource = 'HTOne/Resources/*'
to.dependency 'howTo/Core'
db.ios.dependency 'FMDB', '~> 2.3'
end
s.subspec 'Whole' do |wh|
wh.dependency 'howTo/Core'
wh.dependency 'howTo/HTOne'
end
end
ps.试试将default_subspec设为’Whole’
发布到CocoaPods
1.先验证你的.spec文件
pod spec lint HCKitProject.podspec
有时候总有一些恼人的warning,可以加上这句--allow-warnings
pod spec lint HCKitProject.podspec --allow-warnings
2.没问题后就可以发布了,如果有warnings则需要加上--allow-warnings
,否则验证不通过
pod trunk push --allow-warnings
3.你可能没有注册truck,那么以下两个个方法应该用得到,注册成功后会收到邮件。
pod trunk register aa@bb.com 'name' --description='dexcription' //注册
pod trunk me //查看自己的注册信息
4.现在可以用了
pod 'howTo', '~> 0.0.1'
pod 'howTo/HTOne', '~> 0.0.1'
ps:在git里打上跟spec里设置的version想对应的tag。
我想不发布也直接用
当然可以,对于自己正在不断更新的代码,用这种方式载入工程会更方便。
1.不管tag使用,将总是使用git上master下的最新代码。
pod 'howTo', :git => 'http://EXAMPLE/howTo.git'
2.使用tag,将只会使用指定tag的代码。
ht_version = '0.3.15'
pod 'howTo', :git => 'http://EXAMPLE/howTo.git',: tag=>ht_version
3.加载subspec。
pod 'howTo/HTOne', :git => 'http://EXAMPLE/howTo.git',: tag=>'0.0.1'