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" doplatform :osx, '10.8'project "AFNetworking Mac Example.xcodeproj"pod "AFNetworking", "1.3.3"
endtarget "AFNetworking iOS Example" doplatform :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:- AFNetworkingSPEC CHECKSUMS:AFNetworking: 127629aef6e631d57291c25154defc678c8a7337PODFILE CHECKSUM: 6f295323460330fe2653455f8ed3f15e71283613COCOAPODS: 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

Podfile、Podfile.lock、Manifest.lock、Podspec相关推荐

  1. mysql锁机制——乐观锁、悲观锁;共享锁、排他锁、行表锁、间隔后码锁、MVCC 与 thinkphp的lock解析

    锁的引入 如果A有100元,同时对B.C转账,若处理是同时的,则此时同时读取A的余额为100元,在对两人转账后写回,A的余额不是0元而是50元.因此,为了防止这种现象的出现,要引入锁的概念,如只有在A ...

  2. .NET异步和多线程系列(四)- 多线程异常处理、线程取消、多线程的临时变量问题、线程安全和锁lock

    本文是.NET异步和多线程系列第四章,主要介绍的是多线程异常处理.线程取消.多线程的临时变量问题.线程安全和锁lock等. 一.多线程异常处理 多线程里面抛出的异常,会终结当前线程,但是不会影响别的线 ...

  3. mysql读写分离主从原理、事务隔离级别及使用、锁表和锁行场景、乐观锁和悲观锁、lock锁和sychronized区别及使用自己学习之后总结和参考一些博客感觉系统了解了

    synchronized与Lock的区别 两者区别: 1.首先synchronized是java内置关键字,在jvm层面,Lock是个java类: 2.synchronized无法判断是否获取锁的状态 ...

  4. 多线程的三种实现方法、线程类的常见方法、线程安全问题:synchronized和Lock锁、生产者和消费者问题

    1. 多线程的三种实现方式 1.1 继承Thread类 实现步骤: 定义一个类MyThread继承Thread类 在MyThread类中重写run()方法 创建MyThread类的对象 启动线程sta ...

  5. 聊一聊MySQL的记录锁、间隙锁与 Next-Key Lock

    有小伙伴在微信上表示面试时被问到了 Next-Key Lock 是啥,结果一脸懵逼,那么今天我们来捋一捋 MySQL 中的记录锁.间隙锁以及 Next-Key Lock. 1. Record Lock ...

  6. Android APK 签名文件MANIFEST.MF、CERT.SF、CERT.RSA分析

    首先我们找一个已经签名的apk文件,修改后缀名为zip,然后解压.可以看到里面有一个META-INF文件夹,里面就是签名验证的文件.有三个文件MANIFEST.MF.CERT.SF.CERT.RSA分 ...

  7. java gc的工作原理、如何优化GC的性能、如何和GC进行有效的交互

    java gc的工作原理.如何优化GC的性能.如何和GC进行有效的交互 一个优秀的Java 程序员必须了解GC 的工作原理.如何优化GC的性能.如何和GC进行有效的交互,因为有一些应用程序对性能要求较 ...

  8. 详解各种锁:CAS、共享锁、排它锁、互斥锁、悲观锁、乐观锁、行级锁、表级锁、页级锁、死锁、JAVA对CAS的支持、ABA问题、AQS原理

    共享锁(S锁) 又称为读锁,可以查看但无法修改和删除的一种数据锁.如果事务T对数据A加上共享锁后,则其他事务只能对A再加共享锁,不能加排它锁.获准共享锁的事务只能读数据,不能修改数据. 共享锁下其它用 ...

  9. 对象头、锁的四种状态、Java和处理器实现原子操作的方式(CAS、锁机制;总线锁定、缓存锁定)

    1.对象头 Java对象头里的Mark Word里默认存储对象的HashCode.分代年龄和锁标记位. 32位JVM的Mark Word的默认存储结构如下图所示: 在运行期间,Mark Word里存储 ...

  10. 独占锁、共享锁、更新锁,乐观锁、悲观锁

    转载自   独占锁.共享锁.更新锁,乐观锁.悲观锁 1.锁的两种分类方式 (1)从数据库系统的角度来看,锁分为以下三种类型: 独占锁(Exclusive Lock)       独占锁锁定的资源只允许 ...

最新文章

  1. 从Preact了解一个类React的框架是怎么实现的(一): 元素创建
  2. 计算机维修实训室制度,计算机实训室规章制度
  3. 计算机视觉编程——增强现实基础
  4. MySQL INSERT INTO...ON DUPLICATE KEY UPDATE的使用
  5. python popen函数讲解_Python常用模块函数代码汇总解析
  6. SpringBoot+Junt+Mock测试方法
  7. SAP Spartacus cxPageTemplateStyle Directive的作用
  8. 各种环境下的渗透测试
  9. Windows下UAC安全机制笔记
  10. 自然语言处理的一些链接
  11. linux测试函数耗时tick数,C语言中怎样测验函数执行时间
  12. 小程序新闻列表页面布局代码_论坛小程序·“我的”页面布局
  13. 使用Turi Create训练核心ML模型以对犬种进行分类
  14. 为解决WINDOWS JRE启动外壳,找了好几个方案
  15. Atitit btree 搜索原理 目录 第一节 左边小右边大 的有序树 1 第二节 平衡算法 1 第三节 层次高度一般3--4层 3 第四节 类似索引 3 第二章 Ref 5 第一节 左边小右
  16. 开关电源EMI整改实例(方法)。
  17. possible formatting directive
  18. Python的学习笔记案例8--空气质量指数计算9.0
  19. docker查看mysql镜像版本_Docker 查看镜像信息
  20. 错误 3 error C2181: 没有匹配 if 的非法 else c:\users\zhong\desktop\我的程序\c++qt程序\test\sineware\sineware\sinewa

热门文章

  1. 使用 Metasploit 利用 MySQL 默认空密码或弱密码漏洞 (CVE-2002-1809, CNNVD-200212-263, CVE-1999-0502)
  2. 《大师谈游戏设计——创意与节奏》【笔记二】
  3. ABAQUS常用量纲
  4. javplayer 使用教程_童装裁剪之连衣裙打版教程 有图纸
  5. Axure8.0汉化包+注册码
  6. x01.wos: 纸娃娃系统
  7. 1. 喵喵宠物管理系统需求分析
  8. SwitchHost无法切换环境
  9. MMKV_高性能MMKV数据交互分析-MMKV初始化
  10. ARM中国上演夺权互撕大战:抢公章、互发声明、董事长兼CEO“被罢免”