CocoaPods学习01-Podfile
CocoaPods学习03-pod install vs pod update
CocoaPods学习04-制作自己的pod库
.podspec文件,相当于pod库的一个映射描述文件
根属性
name库名
spec.name = 'AFNetworking'
version版本号
spec.version = '3.0.0'
-
authors作者 单人或者多人
spec.author = 'ZJ' spec.authors = 'AZJ','BZJ' spec.authors = { 'AZJ' => 'azj@google.com', 'BZJ' = > 'bzj@sina.cn'}
license 版权许可
spec.license = 'MIT'
homepage 主页
spec.homepage = 'http://www.zj.github.io'
source 库源地址
git 指定tag
spec.source = { :git => 'https://github.com/AFNetworking/AFNetworking.git', :tag => spec.version.to_s }
svn 指定tag
spec.source = { :svn => 'http://svn.code.sf.net/p/polyclipping/code', :tag => '4.8.8' }
http地址 支持的格式有zip, tgz, bz2, txz 和 tar
指定hash码 支持sha1和sha256
spec.source = { :http => 'http://dev.wechatapp.com/download/sdk/WeChat_SDK_iOS_en.zip' :sha1 => '7e21857fe11a511f472cfd7cfa2d979bd7ab7d96'}
summary 摘要
spec.summary = 'How to make love!'
以上都是必须设置的 ,下面的为可选
- cocoapods_version支持的CocoaPods版本号
spec.cocoapods_version = '>= 0.36'
- description描述
spec.description = <<-DESC
Computes the meaning of life.
Features:
1. Is self aware
...
42. Likes candies.
DESC
- screenshots 快照
spec.screenshot = [ 'http://dl.dropbox.com/u/378729/MBProgressHUD/1.png',
'http://dl.dropbox.com/u/378729/MBProgressHUD/2.png' ]`
documentation_url 文档地址
spec.documentation_url = 'http://www.example.com/docs.html'
requires_arc 是否需要arc环境
spec.requires_arc = true
deprecated 弃用
spec.deprecated = true
平台
设置支持的平台及版本号
spec.platform = :osx, '10.8'
spec.platform = :ios
spec.platform = :osx
spec.ios.deployment_target = '6.0'
spec.osx.deployment_target = '10.8'
编译设置
dependency 依赖的其他库
spec.dependency 'AFNetworking', '~> 1.0'
spec.ios.dependency 'MBProgressHUD', '~> 0.5'
frameworks 依赖的framework
spec.ios.framework = 'CFNetwork'
spec.frameworks = 'QuartzCore', 'CoreData'
libraries 依赖的libraries
spe.ios.library = 'xml2'
spe.libraries = 'xml2', 'z'
compiler_flags 编译设置(如警告忽略,宏设置)
spec.compiler_flags = '-Wno-format', '-DOS_OBJECT_USE_OBJC=0'
prefix_header_contents pch预编译头文件内容
spec.prefix_header_contents = '#import <UIKit/UIKit.h>'
prefix_header_file pch预编译头文件路径
spec.prefix_header_file = 'iphone/include/prefix.pch'
文件样式
Podspecs应该放在repository的根目录
*匹配所有,?匹配一个任意字符,[^a-d]匹配集合内字符 {p,q}匹配p或q \跳过下一个
"JSONKit.?" 所有的jsonkit为名的文件
"*" 所有文件
"*.{h,m}" 所有的.h.m文件
source_files
源文件
spec.source_files = 'Classes/**/*.{h,m}'
spec.source_files = 'Classes/**/*.{h,m}', 'More_Classes/**/*.{h,m}'
public_header_files
公开头文件 用户可以引入查看的头文件 ,不设置则搜有的头文件都可以引入
spec.public_header_files = 'Headers/Public/*.h'
private_header_files
私有头文件 用户不可以引入的头文件
spec.private_header_files = 'Headers/Private/*.h'
resource_bundles
资源包 推荐使用
spec.resource_bundles = {
'MapBox' => ['MapView/Map/Resources/*.png'],
'OtherResources' => ['MapView/Map/OtherResources/*.png']
}
resources
资源包
spec.resource = 'MJRefresh/MJRefresh.bundle'
subspec
子模块依赖
实用示例
MJRefresh的spec
Pod::Spec.new do |s|
s.name = 'MJRefresh'
s.version = '3.1.15.1'
s.summary = 'An easy way to use pull-to-refresh'
s.homepage = 'https://github.com/CoderMJLee/MJRefresh'
s.license = 'MIT'
s.authors = {'MJ Lee' => 'richermj123go@vip.qq.com'}
s.platform = :ios, '6.0'
s.source = {:git => 'https://github.com/CoderMJLee/MJRefresh.git', :tag => s.version}
s.source_files = 'MJRefresh/**/*.{h,m}'
s.resource = 'MJRefresh/MJRefresh.bundle'
s.requires_arc = true
end
SDWebImage的spec
Pod::Spec.new do |s|
s.name = 'SDWebImage'
s.version = '4.2.2'
s.osx.deployment_target = '10.8'
s.ios.deployment_target = '7.0'
s.tvos.deployment_target = '9.0'
s.watchos.deployment_target = '2.0'
s.license = 'MIT'
s.summary = 'Asynchronous image downloader with cache support with an UIImageView category.'
s.homepage = 'https://github.com/rs/SDWebImage'
s.author = { 'Olivier Poitrey' => 'rs@dailymotion.com' }
s.source = { :git => 'https://github.com/rs/SDWebImage.git', :tag => s.version.to_s }
s.description = 'This library provides a category for UIImageView with support for remote ' \
'images coming from the web. It provides an UIImageView category adding web ' \
'image and cache management to the Cocoa Touch framework, an asynchronous ' \
'image downloader, an asynchronous memory + disk image caching with automatic ' \
'cache expiration handling, a guarantee that the same URL won\'t be downloaded ' \
'several times, a guarantee that bogus URLs won\'t be retried again and again, ' \
'and performances!'
s.requires_arc = true
s.framework = 'ImageIO'
s.default_subspec = 'Core'
s.subspec 'Core' do |core|
core.source_files = 'SDWebImage/{NS,SD,UI}*.{h,m}'
core.exclude_files = 'SDWebImage/UIImage+WebP.{h,m}', 'SDWebImage/SDWebImageWebPCoder.{h,m}'
core.tvos.exclude_files = 'SDWebImage/MKAnnotationView+WebCache.*'
end
s.subspec 'MapKit' do |mk|
mk.osx.deployment_target = '10.8'
mk.ios.deployment_target = '7.0'
mk.tvos.deployment_target = '9.0'
mk.source_files = 'SDWebImage/MKAnnotationView+WebCache.*'
mk.framework = 'MapKit'
mk.dependency 'SDWebImage/Core'
end
s.subspec 'GIF' do |gif|
gif.ios.deployment_target = '7.0'
gif.source_files = 'SDWebImage/FLAnimatedImage/*.{h,m}'
gif.dependency 'SDWebImage/Core'
gif.dependency 'FLAnimatedImage', '~> 1.0'
gif.xcconfig = {
'USER_HEADER_SEARCH_PATHS' => '$(inherited) $(SRCROOT)/FLAnimatedImage/FLAnimatedImage'
}
end
s.subspec 'WebP' do |webp|
webp.source_files = 'SDWebImage/UIImage+WebP.{h,m}', 'SDWebImage/SDWebImageWebPCoder.{h,m}'
webp.xcconfig = {
'GCC_PREPROCESSOR_DEFINITIONS' => '$(inherited) SD_WEBP=1',
'USER_HEADER_SEARCH_PATHS' => '$(inherited) $(SRCROOT)/libwebp/src'
}
webp.watchos.xcconfig = {
'GCC_PREPROCESSOR_DEFINITIONS' => '$(inherited) SD_WEBP=1 WEBP_USE_INTRINSICS=1',
'USER_HEADER_SEARCH_PATHS' => '$(inherited) $(SRCROOT)/libwebp/src'
}
webp.dependency 'SDWebImage/Core'
webp.dependency 'libwebp'
end
end
参考地址
cocoapods guides