添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
含蓄的红薯  ·  ctp-follow/text.txt ...·  1 月前    · 
酷酷的柑橘  ·  FineBI ...·  4 月前    · 
高大的热带鱼  ·  Python手势识别与控制·  5 月前    · 
快乐的领结  ·  How to solve this ...·  1 年前    · 

Overview

A specification describes a version of Pod library. It includes details about where the source should be fetched from, what files to use, the build settings to apply, and other general metadata such as its name, version, and description.

A stub specification file can be generated by the [pod spec create]( guides.cocoapods.org/terminal/commands.html#pod_spec_create ) command.

The specification DSL provides great flexibility and dynamism. Moreover, the DSL adopts the [convention over configuration]( en.wikipedia.org/wiki/Convention_over_configuration ) and thus it can be very simple:

Pod::Spec.new do |spec|
  spec.name         = 'Reachability'
  spec.version      = '3.1.0'
  spec.license      = { :type => 'BSD' }
  spec.homepage     = 'https://github.com/tonymillion/Reachability'
  spec.authors      = { 'Tony Million' => '[email protected]' }
  spec.summary      = 'ARC and GCD Compatible Reachability Class for iOS and OS X.'
  spec.source       = { :git => 'https://github.com/tonymillion/Reachability.git', :tag => 'v3.1.0' }
  spec.source_files = 'Reachability.{h,m}'
  spec.framework    = 'SystemConfiguration'

Or it can be quite detailed:

Pod::Spec.new do |spec|
  spec.name          = 'Reachability'
  spec.version       = '3.1.0'
  spec.license       = { :type => 'BSD' }
  spec.homepage      = 'https://github.com/tonymillion/Reachability'
  spec.authors       = { 'Tony Million' => '[email protected]' }
  spec.summary       = 'ARC and GCD Compatible Reachability Class for iOS and OS X.'
  spec.source        = { :git => 'https://github.com/tonymillion/Reachability.git', :tag => 'v3.1.0' }
  spec.module_name   = 'Rich'
  spec.swift_version = '4.0'
  spec.ios.deployment_target  = '9.0'
  spec.osx.deployment_target  = '10.10'
  spec.source_files       = 'Reachability/common/*.swift'
  spec.ios.source_files   = 'Reachability/ios/*.swift', 'Reachability/extensions/*.swift'
  spec.osx.source_files   = 'Reachability/osx/*.swift'
  spec.framework      = 'SystemConfiguration'
  spec.ios.framework  = 'UIKit'
  spec.osx.framework  = 'AppKit'
  spec.dependency 'SomeOtherPod'

Defined Under Namespace

Modules: AttributeSupport , Deprecations , RootAttributesAccessors Classes: Attribute , PlatformProxy Root specification A ‘root’ specification stores the information about the specific version of a library. The attributes in this group can only be written to on the ‘root’ specification, **not** on the ‘sub-specifications’. The attributes listed in this group are the only one which are required by a podspec. The attributes of the other groups are offered to refine the podspec and follow a convention over configuration approach. A root specification can describe these attributes either directly of through ‘[sub-specifications](#subspec)’. collapse
LICENSE_KEYS =

The keys accepted by the license attribute.

:git => [ :tag , :branch , :commit , :submodules ] . freeze , :svn => [ :folder , :tag , :revision ] . freeze , :hg => [ :revision ] . freeze , :http => [ :flatten , :type , :sha256 , :sha1 , :headers ] . freeze , } . freeze Platform A specification should indicate the platform and the correspondent deployment targets on which the library is supported. If not defined in a subspec the attributes of this group inherit the value of the parent. collapse
PLATFORMS =

The names of the platforms supported by the specification class.

Build settings In this group are listed the attributes related to the configuration of the build environment that should be used to build the library. If not defined in a subspec the attributes of this group inherit the value of the parent. collapse
SCRIPT_PHASE_REQUIRED_KEYS =

——————#

SCRIPT_PHASE_OPTIONAL_KEYS =
[:shell_path, :input_files, :output_files, :input_file_lists, :output_file_lists,
:show_env_vars_in_log, :execution_position, :dependency_file, :always_out_of_date].freeze
EXECUTION_POSITION_KEYS =
[:before_compile, :after_compile, :before_headers, :after_headers, :any].freeze
ALL_SCRIPT_PHASE_KEYS =
(SCRIPT_PHASE_REQUIRED_KEYS + SCRIPT_PHASE_OPTIONAL_KEYS).freeze
File patterns Podspecs should be located at the **root** of the repository, and paths to files should be specified **relative** to the root of the repository as well. File patterns do not support traversing the parent directory ( `..` ). File patterns may contain the following wildcard patterns: ### Pattern: * Matches any file. Can be restricted by other values in the glob. * `*` will match all files * `c*` will match all files beginning with `c` * `*c` will match all files ending with `c` * `*c*` will match all files that have `c` in them (including at the beginning or end) Equivalent to `/.*/x` in regexp. **Note** this will not match Unix-like hidden files (dotfiles). In order to include those in the match results, you must use something like `{*,.*}`. ### Pattern: ** Matches directories recursively. ### Pattern: ? Matches any one character. Equivalent to `/.{1}/` in regexp. ### Pattern: [set] Matches any one character in set. Behaves exactly like character sets in Regexp, including set negation (`[^a-z]`). ### Pattern: {p,q} Matches either literal `p` or literal `q`. Matching literals may be more than one character in length. More than two literals may be specified. Equivalent to pattern alternation in regexp. ### Pattern: \ Escapes the next meta-character. ### Examples Consider these to be evaluated in the source root of [JSONKit](https://github.com/johnezang/JSONKit). "JSONKit.?" #=> ["JSONKit.h", "JSONKit.m"] "*.[a-z][a-z]" #=> ["CHANGELOG.md", "README.md"] "*.[^m]*" #=> ["JSONKit.h"] "*.{h,m}" #=> ["JSONKit.h", "JSONKit.m"] "*" #=> ["CHANGELOG.md", "JSONKit.h", "JSONKit.m", "README.md"] collapse
ON_DEMAND_RESOURCES_CATEGORY_KEYS =

The keys accepted by the category attribute for each on demand resource entry.

Subspecs A library can specify a dependency on either another library, a subspec of another library, or a subspec of itself. collapse
SUPPORTED_TEST_TYPES =

The list of the test types currently supported.

SCHEME_KEYS =
[:launch_arguments, :environment_variables, :code_coverage, :parallelizable, :build_configurations].freeze

Class Attribute Summary collapse

. attributes ⇒ Object readonly

Returns the value of attribute attributes.

Root specification A ‘root’ specification stores the information about the specific version of a library. The attributes in this group can only be written to on the ‘root’ specification, **not** on the ‘sub-specifications’. The attributes listed in this group are the only one which are required by a podspec. The attributes of the other groups are offered to refine the podspec and follow a convention over configuration approach. A root specification can describe these attributes either directly of through ‘[sub-specifications](#subspec)’. collapse Platform A specification should indicate the platform and the correspondent deployment targets on which the library is supported. If not defined in a subspec the attributes of this group inherit the value of the parent. collapse Build settings In this group are listed the attributes related to the configuration of the build environment that should be used to build the library. If not defined in a subspec the attributes of this group inherit the value of the parent. collapse File patterns Podspecs should be located at the **root** of the repository, and paths to files should be specified **relative** to the root of the repository as well. File patterns do not support traversing the parent directory ( `..` ). File patterns may contain the following wildcard patterns: ### Pattern: * Matches any file. Can be restricted by other values in the glob. * `*` will match all files * `c*` will match all files beginning with `c` * `*c` will match all files ending with `c` * `*c*` will match all files that have `c` in them (including at the beginning or end) Equivalent to `/.*/x` in regexp. **Note** this will not match Unix-like hidden files (dotfiles). In order to include those in the match results, you must use something like `{*,.*}`. ### Pattern: ** Matches directories recursively. ### Pattern: ? Matches any one character. Equivalent to `/.{1}/` in regexp. ### Pattern: [set] Matches any one character in set. Behaves exactly like character sets in Regexp, including set negation (`[^a-z]`). ### Pattern: {p,q} Matches either literal `p` or literal `q`. Matching literals may be more than one character in length. More than two literals may be specified. Equivalent to pattern alternation in regexp. ### Pattern: \ Escapes the next meta-character. ### Examples Consider these to be evaluated in the source root of [JSONKit](https://github.com/johnezang/JSONKit). "JSONKit.?" #=> ["JSONKit.h", "JSONKit.m"] "*.[a-z][a-z]" #=> ["CHANGELOG.md", "README.md"] "*.[^m]*" #=> ["JSONKit.h"] "*.{h,m}" #=> ["JSONKit.h", "JSONKit.m"] "*" #=> ["CHANGELOG.md", "JSONKit.h", "JSONKit.m", "README.md"] collapse Subspecs A library can specify a dependency on either another library, a subspec of another library, or a subspec of itself. collapse Multi-Platform support A specification can store values which are specific to only one platform. For example one might want to store resources which are specific to only iOS projects. spec.resources = 'Resources/**/*.png' spec.ios.resources = 'Resources_ios/**/*.png' collapse
# File 'lib/cocoapods-core/specification/dsl/attribute_support.rb', line 7
def attributes
  @attributes
  spec.app_spec do |app_spec|
    app_spec.source_files = 'NSAttributedString+CCLFormat.m'
    app_spec.dependency 'AFNetworking'
# File 'lib/cocoapods-core/specification/dsl.rb', line 1783
def app_spec(name = 'App', &block)
  appspec = Specification.new(self, name, :app_specification => true, &block)
  @subspecs << appspec
  appspec
spec.authors = 'Darth Vader', 'Wookiee'
spec.authors = { 'Darth Vader' => '[email protected]', 'Wookiee' => '[email protected]' }

Parameters:

authors ( String , Hash{String=>String} )

the list of the authors of the library and their emails.

An array of subspecs names that should be used as preferred dependency. If not specified, a specification requires all of its subspecs as dependencies.

You may use the value ‘:none` to specify that none of the subspecs are required to compile this pod and that all subspecs are optional.

A Pod should make available the full library by default. Users can fine tune their dependencies, and exclude unneeded subspecs, once their requirements are known. Therefore, this attribute is rarely needed. It is intended to be used to select a default if there are ‘sub-specifications’ which provide alternative incompatible implementations, or to exclude modules rarely needed (especially if they trigger dependencies on other libraries).

# File 'lib/cocoapods-core/specification/dsl.rb', line 1826
root_attribute :default_subspecs,
:container => Array,
:types => [Array, String, Symbol],
:singularize => true

Any dependency on other Pods or to a ‘sub-specification’.

Dependencies can specify versions requirements. The use of the optimistic version indicator ‘~>` is recommended because it provides good control over the version without being too restrictive. For example, `~> 1.0.1` is equivalent to `>= 1.0.1` combined with `< 1.1`. Similarly, `~> 1.0` will match `1.0`, `1.0.1`, `1.1`, but will not upgrade to `2.0`.

Pods with overly restrictive dependencies limit their compatibility with other Pods.

Examples:

spec.dependency 'AFNetworking', '~> 1.0'
spec.dependency 'AFNetworking', '~> 1.0', :configurations => ['Debug']
spec.dependency 'AFNetworking', '~> 1.0', :configurations => :debug
spec.dependency 'RestKit/CoreData', '~> 0.20.0'
spec.ios.dependency 'MBProgressHUD', '~> 0.5'
def dependency ( * args ) name , * version_requirements = args if name == self . name raise Informative , " A specification can't require itself as a " \ ' subspec ' if @parent composed_name = ' ' @parent . name . split ( ' / ' ) . each do | component | composed_name << component if name == composed_name raise Informative , " A subspec can't require one of its " \ ' parents specifications ' composed_name << ' / ' configurations_option = version_requirements . find { | option | option . is_a? ( Hash ) && option . key? ( :configurations ) } whitelisted_configurations = if configurations_option version_requirements . delete ( configurations_option ) Array ( configurations_option . delete ( :configurations ) ) . map { | c | c . to_s . downcase } dependency_options = version_requirements . reject { | req | req . is_a? ( String ) } dependency_options . each do | dependency_option | if dependency_option . is_a? ( Hash ) if ! dependency_option [ :path ] . nil? raise Informative , ' Podspecs cannot specify the source of dependencies. The `:path` option is not supported. ' \ ' `:path` can be used in the Podfile instead to override global dependencies. ' elsif ! dependency_option [ :git ] . nil? raise Informative , ' Podspecs cannot specify the source of dependencies. The `:git` option is not supported. ' \ ' `:git` can be used in the Podfile instead to override global dependencies. ' raise Informative , " Unsupported version requirements. #{ version_requirements . inspect } is not valid. " attributes_hash [ ' dependencies ' ] ||= { } attributes_hash [ ' dependencies ' ] [ name ] = version_requirements unless whitelisted_configurations . nil? if ( extras = whitelisted_configurations - %w( debug release ) ) && ! extras . empty? raise Informative , " Only `Debug` & `Release` are allowed under configurations for dependency on ` #{ name } `. " \ " Found #{ extras . map { | configuration | " ` #{ configuration } ` " } . to_sentence } . " attributes_hash [ ' configuration_pod_whitelist ' ] ||= { } attributes_hash [ ' configuration_pod_whitelist ' ] [ name ] = whitelisted_configurations def dependency= ( args ) joined = args . join ( ' \', \' ' ) arguments = " \' #{ joined } \' " raise Informative , " Cannot assign value to `dependency`. Did you mean: `dependency #{ arguments } `? "
# File 'lib/cocoapods-core/specification/dsl.rb', line 646
def deployment_target=(*_args)
  raise Informative, 'The deployment target can be declared only per ' \
    'platform.'
spec.ios.exclude_files = 'Classes/osx'
spec . exclude_files = ' Classes/**/unused.{h,m} '

Parameters:

exclude_files ( String , Array<String> )

the file patterns that the Pod should ignore.

spec . ios . framework = ' CFNetwork ' spec . frameworks = ' QuartzCore ' , ' CoreData '

Parameters:

frameworks ( String , Array<String> )

A list of framework names.

# File 'lib/cocoapods-core/specification/dsl.rb', line 1070
attribute :header_mappings_dir,
:inherited => true

Key-Value pairs to add to the generated ‘Info.plist`.

The values will be merged with the default values that CocoaPods generates, overriding any duplicates.

For library specs, the values will be merged into the generated Info.plist for libraries that are integrated using frameworks. It will have no effect for static libraries.

Subspecs (other than app and test specs) are not supported.

For app specs, the values will be merged into the application host’s ‘Info.plist`.

For test specs, the values will be merged into the test bundle’s ‘Info.plist`.

spec . info_plist = { ' CFBundleIdentifier ' => ' com.myorg.MyLib ' , ' MY_VAR ' => ' SOME_VALUE '

Parameters:

info_plist ( Hash )

The Info.plist values for the Pod.

The license of the Pod.

Unless the source contains a file named ‘LICENSE.*` or `LICENCE.*`, the path of the license file or the integral text of the notice commonly used for the license type must be specified. If a license file is specified, it either must be without a file extensions or be one of `txt`, `md`, or `markdown`.

This information is used by CocoaPods to generate acknowledgement files (markdown and plist) which can be used in the acknowledgements section of the final application.

spec . license = ' MIT ' spec . license = { :type => ' MIT ' , :file => ' MIT-LICENSE.txt ' } spec . license = { :type => ' MIT ' , :text => <<-LICENSE Permission is granted to... LICENSE

The module map file that should be used when this pod is integrated as a framework.

‘false` indicates that the default CocoaPods `modulemap` file should not be generated.

‘true` is the default and indicates that the default CocoaPods `modulemap` file should be generated.

By default, CocoaPods creates a module map file based upon the public headers in a specification.

A hash of on demand resources that should be copied into the target bundle. Resources specified here will automatically become part of the resources build phase of the target this pod is integrated into.

If no category is specified then ‘:download_on_demand` is used as the default.

Tags specified by pods are always managed by CocoaPods. If a tag is renamed, changed or deleted then CocoaPods will update the tag within the targets the pod was integrated into. It is highly recommended not to share the same tags for your project as the ones used by the pods your project consumes.

s . on_demand_resources = { ' Tag1 ' => { :paths => [ ' file1.png ' , ' file2.png ' ] , :category => :download_on_demand } s . on_demand_resources = { ' Tag1 ' => { :paths => [ ' file1.png ' , ' file2.png ' ] , :category => :initial_install }

Parameters:

on_demand_resources ( Hash{String=>String} , Hash{String=>Array<String>} , Hash{String=>Hash} )

The on demand resources shipped with the Pod.

# File 'lib/cocoapods-core/specification/dsl.rb', line 1408
attribute :on_demand_resources,
:types => [String, Array, Hash],
:container => Hash,
:file_patterns => true,
:singularize => true
def platform= ( args ) name , deployment_target = args name = :osx if name . to_s == ' macos ' attributes_hash [ ' platforms ' ] = if name { name . to_s => deployment_target }
# File 'lib/cocoapods-core/specification/dsl.rb', line 923
attribute :pod_target_xcconfig,
:container => Hash,
:inherited => true
spec . prefix_header_contents = ' #import <UIKit/UIKit.h> ' spec . prefix_header_contents = ' #import <UIKit/UIKit.h> ' , ' #import <Foundation/Foundation.h> '

Parameters:

content ( String )

The contents of the prefix header.

# File 'lib/cocoapods-core/specification/dsl.rb', line 984
attribute :prefix_header_contents,
:types => [Array, String],
:inherited => true

A path to a prefix header file to inject in the prefix header of the pod project. ‘false` indicates that the default CocoaPods prefix header should not be generated. `true` is the default and indicates that the default CocoaPods prefix header should be generated.

The file path options is __not recommended__ as Pods should not pollute the prefix header of other libraries or of the user project.

spec . prefix_header_file = ' iphone/include/prefix.pch ' spec . prefix_header_file = false

Parameters:

( Bool , String )

The path to the prefix header file or whether to disable prefix_header generation.

# File 'lib/cocoapods-core/specification/dsl.rb', line 1017
attribute :prefix_header_file,
:types => [TrueClass, FalseClass, String],
:inherited => true

A bash script that will be executed after the Pod is downloaded. This command can be used to create, delete and modify any file downloaded and will be ran before any paths for other file attributes of the specification are collected.

This command is executed before the Pod is cleaned and before the Pods project is created. The working directory is the root of the Pod.

If the pod is installed with the ‘:path` option this command will not be executed.

spec . prepare_command = <<-CMD sed -i 's/MyNameSpacedHeader/Header/g' ./**/*.h sed -i 's/MyNameOtherSpacedHeader/OtherHeader/g' ./**/*.h

Parameters:

command ( String )

the prepare command of the pod.

spec . preserve_path = ' IMPORTANT.txt ' spec . preserve_paths = ' Frameworks/*.framework '

Parameters:

preserve_paths ( String , Array<String> )

the paths that should be not cleaned.

A list of file patterns that should be used to mark private headers.

These patterns are matched against the public headers (or all the headers if no public headers have been specified) to exclude those headers which should not be exposed to the user project and which should not be used to generate the documentation. When the library is built, these headers will appear in the build directory.

Header files that are not listed as neither public nor project or private will be treated as private, but in addition will not appear in the build directory at all.

# File 'lib/cocoapods-core/specification/dsl.rb', line 1312
attribute :private_header_files,
:container => Array,
:file_patterns => true

A list of file patterns that should be used to mark project headers.

These patterns are matched against the public headers (or all the headers if no public headers have been specified) to exclude those headers which should not be exposed to the user project and which should not be used to generate the documentation. When the library is built, these headers will not appear in the build directory.

# File 'lib/cocoapods-core/specification/dsl.rb', line 1282
attribute :project_header_files,
:container => Array,
:file_patterns => true

A list of file patterns that should be used as public headers.

These patterns are matched against the source files to include headers that will be exposed to the user’s project and from which documentation will be generated. When the library is built, these headers will appear in the build directory. If no public headers are specified then all the headers in source_files are considered public.

# File 'lib/cocoapods-core/specification/dsl.rb', line 1256
attribute :public_header_files,
:container => Array,
:file_patterns => true
# File 'lib/cocoapods-core/specification/dsl.rb', line 1683
attribute :requires_app_host,
:types => [TrueClass, FalseClass],
:default_value => false,
:spec_types => [:test]

‘requires_arc` allows you to specify which source_files use ARC. This can either be the files which support ARC, or true to indicate all of the source_files use ARC.

Files which do not use ARC will have the ‘-fno-objc-arc` compiler flag.

The default value of this attribute is ‘true`.

spec . requires_arc = ' Classes/Arc ' spec . requires_arc = [ ' Classes/*ARC.m ' , ' Classes/ARC.mm ' ]

Parameters:

( Bool , String , Array<String> )

whether the source files require ARC.

attribute :requires_arc , :types => [ TrueClass , FalseClass , String , Array ] , :file_patterns => true , :default_value => true , :inherited => true

This attribute allows to define the name and the file of the resource bundles which should be built for the Pod. They are specified as a hash where the keys represent the name of the bundles and the values the file patterns that they should include.

For building the Pod as a static library, we strongly recommend library developers to adopt resource bundles as there can be name collisions using the resources attribute.

The names of the bundles should at least include the name of the Pod to minimise the chance of name collisions.

To provide different resources per platform namespaced bundles must be used.

Examples:

spec . ios . resource_bundle = { ' MapBox ' => ' MapView/Map/Resources/*.png ' } spec . resource_bundles = { ' MapBox ' => [ ' MapView/Map/Resources/*.png ' ] , ' MapBoxOtherResources ' => [ ' MapView/Map/OtherResources/*.png ' ]

Parameters:

resource_bundles ( Hash{String=>String} , Hash{String=>Array<String>} )

A hash where the keys are the names of the resource bundles and the values are their relative file patterns.

# File 'lib/cocoapods-core/specification/dsl.rb', line 1448
attribute :resource_bundles,
:types => [String, Array],
:container => Hash,
:file_patterns => true,
:singularize => true

A list of resources that should be copied into the target bundle.

For building the Pod as a static library, we strongly recommend library developers to adopt [resource bundles]( guides.cocoapods.org/syntax/podspec.html#resource_bundles ) as there can be name collisions using the resources attribute. Moreover, resources specified with this attribute are copied directly to the client target and therefore they are not optimised by Xcode.

spec . resource = ' Resources/HockeySDK.bundle ' spec . resources = [ ' Images/*.png ' , ' Sounds/* ' ]

Parameters:

resources ( String , Array<String> )

The resources shipped with the Pod.

spec . scheme = { :launch_arguments => [ ' Arg1 ' ] } spec . scheme = { :launch_arguments => [ ' Arg1 ' , ' Arg2 ' ] , :environment_variables => { ' Key1 ' => ' Val1 ' } }

Parameters:

scheme ( Hash )

the scheme configuration to be used for this specification.

spec . screenshot = ' http://dl.dropbox.com/u/378729/MBProgressHUD/1.png ' spec . screenshots = [ ' http://dl.dropbox.com/u/378729/MBProgressHUD/1.png ' , ' http://dl.dropbox.com/u/378729/MBProgressHUD/2.png ' ]

Parameters:

screenshots ( String )

An URL for the screenshot of the Pod.

This attribute allows to define a script phase to execute as part of compilation of the Pod. Unlike a prepare command, script phases execute as part of ‘xcodebuild` they can also utilize all environment variables that are set during compilation.

A Pod can provide multiple script phases to execute and they will be added in the order they were declared and after taking into consideration their execution position setting.

Note In order to provide visibility and awareness of the contents of all script phases, a warning will be presented to the user upon installing your pod if it includes any script phases.

Examples:

spec . script_phase = { :name => ' Hello World ' , :script => ' echo "Hello World" ' } spec . script_phase = { :name => ' Hello World ' , :script => ' echo "Hello World" ' , :execution_position => :before_compile } spec . script_phase = { :name => ' Hello World ' , :script => ' puts "Hello World" ' , :shell_path => ' /usr/bin/ruby ' } spec . script_phase = { :name => ' Hello World ' , :script => ' echo "Hello World" ' , :input_files => [ ' /path/to/input_file.txt ' ] , :output_files => [ ' /path/to/output_file.txt ' ] spec . script_phase = { :name => ' Hello World ' , :script => ' echo "Hello World" ' , :input_file_lists => [ ' /path/to/input_files.xcfilelist ' ] , :output_file_lists => [ ' /path/to/output_files.xcfilelist ' ] spec . script_phases = [ { :name => ' Hello World ' , :script => ' echo "Hello World" ' } , { :name => ' Hello Ruby World ' , :script => ' puts "Hello World" ' , :shell_path => ' /usr/bin/ruby ' } ,

Parameters:

script_phases ( Array<Hash{Symbol=>String}> )

An array of hashes where each hash represents a single script phase.

spec . social_media_url = ' https://twitter.com/cocoapods ' spec . social_media_url = ' https://groups.google.com/forum/#!forum/cocoapods '

Parameters:

social_media_url ( String )

the social media URL.

spec . source = { :git => ' https://github.com/AFNetworking/AFNetworking.git ' , :tag => spec . version . to_s }

Using a tag prefixed with ‘v’ and submodules.

spec . source = { :git => ' https://github.com/typhoon-framework/Typhoon.git ' , :tag => " v #{ spec . version } " , :submodules => true }

Using Subversion with a tag.

spec . source = { :svn => ' http://svn.code.sf.net/p/polyclipping/code ' , :tag => ' 4.8.8 ' }

Using Mercurial with the same revision as the spec’s semantic version string.

spec . source = { :hg => ' https://bitbucket.org/dcutting/hyperbek ' , :revision => " #{ s . version } " }

Using HTTP to download a compressed file of the code. It supports zip, tgz, bz2, txz and tar.

spec . source = { :http => ' http://dev.wechatapp.com/download/sdk/WeChat_SDK_iOS_en.zip ' }

Using HTTP to download a file using a hash to verify the download. It supports sha1 and sha256.

spec . source = { :http => ' http://dev.wechatapp.com/download/sdk/WeChat_SDK_iOS_en.zip ' , :sha1 => ' 7e21857fe11a511f472cfd7cfa2d979bd7ab7d96 ' }

Overloads:

# source= (git) ⇒ Object spec . source_files = ' Classes/**/*.{h,m} ' spec . source_files = ' Classes/**/*.{h,m} ' , ' More_Classes/**/*.{h,m} '

Parameters:

source_files ( String , Array<String> )

the source files of the Pod.

# File 'lib/cocoapods-core/specification/dsl.rb', line 537
root_attribute :static_framework,
:types => [TrueClass, FalseClass],
:default_value => false

Represents specification for a module of the library.

Subspecs participate on a dual hierarchy.

On one side, a specification automatically inherits as a dependency all it children ‘sub-specifications’ (unless a default subspec is specified).

On the other side, a ‘sub-specification’ inherits the value of the attributes of the parents so common values for attributes can be specified in the ancestors.

Although it sounds complicated in practice it means that subspecs in general do what you would expect:

pod 'ShareKit', '2.0'

Installs ShareKit with all the sharers like ‘ShareKit/Evernote`, `ShareKit/Facebook`, etc, as they are defined as subspecs.

pod 'ShareKit/Twitter',  '2.0'
pod 'ShareKit/Pinboard', '2.0'

Installs ShareKit with only the source files for ‘ShareKit/Twitter`, `ShareKit/Pinboard`. Note that, in this case, the ‘sub-specifications’ to compile need the source files, the dependencies, and the other attributes defined by the root specification. CocoaPods is smart enough to handle any issues arising from duplicate attributes.

s.subspec 'Core' do |cs| cs.dependency 'RestKit/ObjectMapping' cs.dependency 'RestKit/Network' cs.dependency 'RestKit/CoreData' s.subspec 'ObjectMapping' do |os|

Nested subspecs.

Pod::Spec.new do |s| s.name = 'Root' s.subspec 'Level_1' do |sp| sp.subspec 'Level_2' do |ssp|
# File 'lib/cocoapods-core/specification/dsl.rb', line 1642
def subspec(name, &block)
  subspec = Specification.new(self, name, &block)
  @subspecs << subspec
  subspec

A short (maximum 140 characters) description of the Pod.

The description should be short, yet informative. It represents the tag line of the Pod and there is no need to specify that a Pod is a library (they always are).

The summary is expected to be properly capitalised and containing the correct punctuation.

The versions of Swift that the specification supports. A version of ‘4’ will be treated as ‘4.0’ by CocoaPods and not ‘4.1’ or ‘4.2’.

Note The Swift compiler mostly accepts major versions and sometimes will honor minor versions. While CocoaPods allows specifying a minor or patch version it might not be honored fully by the Swift compiler.

spec.swift_versions = ['3.0']
spec.swift_versions = ['3.0', '4.0', '4.2']
spec.swift_version = '3.0'
spec . swift_version = ' 3.0 ' , ' 4.0 '

Parameters:

swift_versions ( String , Array<String> )
# File 'lib/cocoapods-core/specification/dsl.rb', line 158
root_attribute :swift_versions,
:container => Array,
:singularize => true
spec . test_spec do | test_spec | test_spec . source_files = ' NSAttributedString+CCLFormatTests.m ' test_spec . dependency ' Expecta '
# File 'lib/cocoapods-core/specification/dsl.rb', line 1761
def test_spec(name = 'Tests', &block)
  subspec = Specification.new(self, name, true, &block)
  @subspecs << subspec
  subspec

Specifies flags to add to the final aggregate target xcconfig file, which propagates to non-overridden and inheriting build settings to the integrated user targets.

This attribute is __not recommended__ as Pods should not pollute the build settings of the user project and this can cause conflicts.

Multiple definitions for build settings that take multiple values will be merged. The user is warned on conflicting definitions for custom build settings and build settings that take only one value.

Typically clang compiler flags or precompiler macro definitions go in here if they are required when importing the pod in the user target. Note that, this influences not only the compiler view of the public interface of your pod, but also all other integrated pods alongside to yours. You should always prefer [‘pod_target_xcconfig`]( guides.cocoapods.org/syntax/podspec.html#pod_target_xcconfig), which can contain the same settings, but only influence the toolchain when compiling your pod target.

# File 'lib/cocoapods-core/specification/dsl.rb', line 958
attribute :user_target_xcconfig,
:container => Hash,
:inherited => true
spec.ios.vendored_frameworks = 'Frameworks/MyFramework.framework'
spec . vendored_frameworks = ' MyFramework.framework ' , ' TheirFramework.xcframework '

Parameters:

vendored_frameworks ( String , Array<String> )

A list of framework bundles paths.

# File 'lib/cocoapods-core/specification/dsl.rb', line 1334
attribute :vendored_frameworks,
:container => Array,
:file_patterns => true,
:singularize => true
spec . ios . vendored_library = ' Libraries/libProj4.a ' spec . vendored_libraries = ' libProj4.a ' , ' libJavaScriptCore.a '

Parameters:

vendored_libraries ( String , Array<String> )

A list of library paths.

# File 'lib/cocoapods-core/specification/dsl.rb', line 1357
attribute :vendored_libraries,
:container => Array,
:file_patterns => true,
:singularize => true
spec . weak_framework = ' Twitter ' spec . weak_frameworks = ' Twitter ' , ' SafariServices '

Parameters:

weak_frameworks ( String , Array<String> )

A list of frameworks names.