一. 什么是podspec文件?
- podspec中spec的全称是“Specification”,说明书的意思。顾名思义,这是用来描述这个库说明信息的文件。
- podspec是cocoaPods的一种文件格式,有一套自己的语法,我们可以到cocoaPods官网进行详细了解。
- podspec描述了一个pod库的版本。它包括有关应从何处获取源、使用什么文件、应用的构建设置以及其他一般元数据(如其名称、版本和描述)的详细信息。
二. 本地的specs文件夹的理解?
终端执行 open ~/.cocoapods/repos
打开本地的repos文件夹。
![](https://img.haomeiwen.com/i3424061/8de8fd5aa3f726c4.png)
repos 里面的文件夹分为两类:
两种的最大区别在于存放podspec文件的仓库谁
-
pod的公有库,即master文件夹。
将自己的podspec文件发送到'https://github.com/CocoaPods/Specs.git' #官方仓库地址
里面。即可让大家一起使用。比如常见的第三方AFNetworking
. -
个人的私有库,即非master的其他文件夹
这些私有库都有一个仓库去维护。比如myRepo文件。1.0文件夹名字就是对应的版本号(每发布一次就会记录对应的版本),里面的Users.podspec就是对应的库podspec文件。
私有库
三. 如何创建podspec文件?
- pod spec create XXX
pod spec create MCViewController
(在项目根目录下) - 会在项目目录中生成一个XXX.podsepc文件
四.如何编写podspec文件?
-
右击
-->打开方式
-->其他
-->Xcode打开
- 常用的基本信息
name:框架名
version:当前版本(注意,是当前版本,假如你后续更新了新版本,需要修改此处)
summary:简要描述,在pod search的时候会显示该信息。
description:详细描述
homepage:页面链接
license:开源协议
author:作者
source:源码git地址
source_files:源文件(可以包含.h和.m)
platform:支持最低ios版本
public_header_files:头文件(.h文件)
resources:资源文件(配置的文件都会被放到mainBundle中)
resource_bundles:资源文件(配置的文件会放到你自己指定的bundle中)
frameworks:依赖的系统框架
vendored_frameworks:依赖的非系统框架
libraries:依赖的系统库
vendored_libraries:依赖的非系统的静态库
dependency:依赖的三方库
swift_version : swift对应的版本
你在三方库中看到的那些文件都是通过这些配置来确定的。当pod install引入三方库时,只会引入你在podspec中配置的那些文件。pods会根据对应的路径去下载对应文件。
示例说明:
Pod::Spec.new do |s|
s.name = "User"
s.version = "1.3"
s.summary = "组件化 用户模块"
s.homepage = "https://gitee.com/modularComponents/User"
s.license = "MIT"
s.author = { "MC" => "562863544@qq.com" }
s.platform = :ios, "8.0"
s.source = { :git => "https://gitee.com/modularComponents/User.git", :tag => "1.3" }
s.source_files = "User/User/**/*"
s.ios.deployment_target = '8.0'
s.swift_version = '4.2'
s.frameworks = 'UIKit'
s.dependency 'MCPageViewController'
s.dependency 'SnapKit'
end
主要说明几个点:
1. source_files
-
source_files代表在source对应的路径下,源文件的路径。
-
文件路径是以
.podspec
文件所在层级开始的。 -
比如该文件路径
文件路径
对应的是s.source_files = "User/User/**/*"
。 意思是需要将items和Reuse目录以及子目录下的文件作为源文件。 -
source_files写法说明
source_files = 'User/User/Reuse.swift' // 直接指定Reuse文件夹名下的所有`.swift`文件
或:
source_files = 'User/User/**/*' `**/*`表示podName目录及其子目录下所有文件,
如果需要在项目中分组显示,这里也要做相应的设置(注意: 这个是物理路径,不是Xcode的项目里的路径)
2. dependency 依赖三方的配置
- 依赖公共库。
s.dependency 'SnapKit'
#当前依赖库,pod install时会自动下载该库(注意:没有=) - 依赖私有库。
s.dependency 'MCPageViewController'
- 如果有依赖库情况,检验podspec文件不通过的情况。请使用:
pod spec lint --sources='spec仓库的地址
如有多个用,
隔开。如果公有库,地址写https://github.com/CocoaPods/Specs.git
比如依赖了两个库MCPageViewController (私有)
和SnapKit (共有)
pod spec lint --sources='https://github.com/mancongiOS/MCPageViewControllerRepo.git,https://github.com/CocoaPods/Specs.git'
- 如何依赖混合源(OC和Swift)?
3. 如何做文件夹层级?
4. 如何关联资源文件?
五. 如何校验podspec文件
-
pod lib lint
只从本地验证你的pod能否通过验证。 -
pod spec lint
从本地和远程验证你的pod能否通过验证,建议使用这个。
--allow-warnings --use-libraries 这个两个如何实现 - 私有库的验证。
使用pod spec lint去验证私有库能否通过验证时应该,应该要添加--sources选项,不然会出现找不到repo的错误。
pod spec lint --sources='私有仓库repo地址,https://github.com/CocoaPods/Specs'
- 私有库引用私有库的问题
在私有库引用了私有库的情况下,在验证和推送私有库的情况下都要加上所有的资源地址,不然pod会默认从官方repo查询。
pod spec lint --sources='私有仓库repo地址,https://github.com/CocoaPods/Specs'
pod repo push 本地repo名 podspec名 --sources='私有仓库repo地址,https://github.com/CocoaPods/Specs'
网友评论