Podfile、Podfile.lock、Manifest.lock、Podspec

Podfile

开发编写的文件,包含了关于工程的targets、Pods的信息,比如依赖的第三方库的版本、资源的加载路径等。主要用于描述一个或多个 Xcode Project 中各个 Targets 之间的依赖关系。

if (repo = ENV['COCOAPODS_SPEC_REPO'])
    source "#{repo}"
end

### Implicit target definition :-/
project "AFNetworking Mac Example.xcodeproj"
####

workspace 'Examples.xcworkspace'

target "AFNetworking Example" do
  platform :osx, '10.8'
  project "AFNetworking Mac Example.xcodeproj"
  pod "AFNetworking", "1.3.3"
end

target "AFNetworking iOS Example" do
  platform :ios, '8.0'
  project "AFNetworking iOS Example.xcodeproj"
  pod "AFNetworking", "1.3.3"
end
Podfile.lock

该文件记录工程安装了哪些Pod以及对应的版本,是pod install的产物

#PODS:记录所有Pod库的具体安装的版本号
PODS:
  - AFNetworking (1.3.3)
#DEPENDENCIES:记录各Pod库之间的相互依赖关系,
DEPENDENCIES:
  - AFNetworking (= 1.3.3)
#SPEC REPOS:仓库信息,即安装了哪些三方库,他们来自于哪个仓库
SPEC REPOS:
  trunk:
    - AFNetworking
#SPEC CHECKSUMS:记录当前各 Pod 库的 Podspec 文件 Hash 值,其实就是文件的 md5
SPEC CHECKSUMS:
  AFNetworking: 127629aef6e631d57291c25154defc678c8a7337
#PODFILE CHECKSUM:记录 Podfile 文件的 Hash 值,同样是 md5,确认是否有变更
PODFILE CHECKSUM: 6f295323460330fe2653455f8ed3f15e71283613
#记录上次所使用的 CocoaPods 版本
COCOAPODS: 1.11.3
Manifest.lock

Manifest.lock其实是Podfile.lock 文件的副本,每次运行 pod install 命令时都会更新;通常Pods文件不放到版本管理里面、Podfile.lock放到版本管理里面,这样在本地拉取代码之后是否需要更新pod,就可以通过对比本地的Manifest.lock和远程Podfile.lock是否相同即可

如果遇见The sandbox is not in sync with the Podfile.lock报错

原因是沙盒文件与 Podfile.lock 文件不同步,根本原因是 Manifest.lock 文件和 Podfile.lock 文件不一致所引起。

PODS:
  - AFNetworking (1.3.3)

DEPENDENCIES:
  - AFNetworking (= 1.3.3)

SPEC REPOS:
  trunk:
    - AFNetworking

SPEC CHECKSUMS:
  AFNetworking: 127629aef6e631d57291c25154defc678c8a7337

PODFILE CHECKSUM: 6f295323460330fe2653455f8ed3f15e71283613

COCOAPODS: 1.11.3
Podspec

描述了一个库是怎样被添加到工程中的。它支持的功能有:列出源文件、framework、编译选项和某个库所需要的依赖等。

Pod::Spec.new do |s|
  s.name = 'Alamofire'
  s.version = '4.6.0'
  s.license = 'MIT'
  s.summary = 'Elegant HTTP Networking in Swift'
  s.homepage = 'https://github.com/Alamofire/Alamofire'
  s.social_media_url = 'http://twitter.com/AlamofireSF'
  s.authors = { 'Alamofire Software Foundation' => 'info@alamofire.org' }
  s.source = { :git => 'https://github.com/Alamofire/Alamofire.git', :tag => s.version }

  s.ios.deployment_target = '8.0'
  s.osx.deployment_target = '10.10'
  s.tvos.deployment_target = '9.0'
  s.watchos.deployment_target = '2.0'

  s.source_files = 'Source/*.swift'
end

我们简单介绍一下podspec文件内容

第一部分是简单的内容,我们不展开介绍,大家从属性名字即可知道属性的作用

  s.name = 'Alamofire'
  s.version = '4.6.0'
  s.license = 'MIT'
  s.summary = 'Elegant HTTP Networking in Swift'
  s.homepage = 'https://github.com/Alamofire/Alamofire'
  s.social_media_url = 'http://twitter.com/AlamofireSF'
  s.authors = { 'Alamofire Software Foundation' => 'info@alamofire.org' }
  s.source = { :git => 'https://github.com/Alamofire/Alamofire.git', :tag => s.version }

第二部分介绍一下不常用的或者需要解释一下

(1)配置三方库的源文件

Source_files:配置三方库的源文件,一般是.h.m.c等后缀的文件

s.source_files  = [Class/**/*.{h,m,c},"ClassA.{h,m}", "Bridge.h”]

(2)配置工程的系统框架

— frameworks:配置依赖的系统框架

s.frameworks  = 'AVFoundation','QuartzCore', ‘CoreLocation'

— vendored_frameworks:配置需要引用的非系统框架

vendored_frameworks = 'Frameworks/MyFramework.framework'

(3)配置工程的的系统库

— vendored_libraries:配置需要引用的非系统静态库(要注意,这里的.a静态库名字必须要带lib前缀,如果引用的静态库名字没lib前缀会导致编译报错,只需要重命名加上即可)

 vendored_libraries = 'Class/libXXX.a’

— Libraries:配置依赖的系统库(要注意,这里的写法需要忽略lib前缀)

libraries = 'c++', 'sqlite3', 'stdc++.6.0.9', 'z'

(4)配置工程的资源文件

— resources:配置工程需要的资源文件,一般包括.bundle.png等文件,资源文件会放在mainBundle中,需要避免命名冲突

  s.resources = ['Resources/*.bundle’]

— resource_bundles来指定bundle的资源文件,不使用mainBundle中的资源文件

resource_bundles = {
    'UIKitBundle' => ['Resources/MyUIKit.bundle'],
}

(5)public_header_files:配置公有的头文件(.h文件)

写法:
source_files = 'Classes/UIKit.h' // 直接指定文件名
或:
source_files = 'Classes/*.h' // Classes文件夹下的所有匹配文件
source_files = 'Classes/**/*.h' // Classes所有路径下的所有匹配文件

s.wb_public_header_files('PublicHeaders’)

(6)dependency:依赖的三方库,pod库或者可以是自身的subspec

dependency 'AFNetworking'

(7)requires_arc:用来配置哪些源文件使用ARC,

s.requires_arc = false #没有文件使用ARC
s.requires_arc = 'Classes/Arc'

s.wb_resources_hook(s)

(8)deployment_target: 配置工程支持的的平台的target的最小值

  s.ios.deployment_target = 9.0

https://guides.cocoapods.org/syntax/podspec.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员的修养

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值