iOS开发-cocoapods私有库&公有库

162 阅读4分钟

CocoaPods是iOS中的一个包管理工具,使用简单,管理高效;

CocoaPods原理

终端执行pod install命令时会有以下几个流程:

  1. 读取podfile文件
  2. 加载源文件 (.podspec
  3. 生成Pods.xcodeproj
  4. 安装第三方库
  5. 写入至磁盘
CocoaPods公有库和私有库区别:

.podspec文件保存位置不同

  • 公有库:本地库制作或者更新完后, 将podspec文件提交至CocoaPods源仓库 (所有人都可以安装)
  • 私有库:本地库制作或者更新完后, 将podspec文件提交至私有源仓库 (私有仓库授权后可以安装)

公有库发布版本方法

pod trunk push [name].podspec

私有库发布版本方法

pod repo push [repoName] [name].podspec

使用上不同:

  • 私有库:面向指定的开发人员;
  • 公有库:面向所有开发人员;

了解Cocoapods的下载、集成、版本控制

关于Cocoapods的发布有哪些注意事项呢?

1.完成github上传,创建一个release版本;

2.cd 到本地项目主目录;

pod spec create 项目名;

创建一个.podspec的文件;

配置.podspec文件;如何配置.podspec文件

配置中的注意:

” 表示匹配所有文件 “.{h,m}” 表示匹配所有以.h和.m结尾的文件 “**” 表示匹配所有子目录

1、同级的文件夹B里面只有.h和.m文件

source_files = "B/*.{h,m}"

2、多级文件夹B/C/D(只有最后一级文件夹里面有.h和.m文件

source_files = "B/C/D/*.{h,m}"

3、多级文件夹B/C/D,每个文件夹里面都有.h和.m文件

source_files = "B/*.{h.m}","B/C/*.{h.m}","B/C/D/*.{h.m}"

其中C D可以用**代替

3.制作支持Cocoapods开源库需要注册Trunk账号;在注册trunk之前,我们需要确认当前的CocoaPods版本是否足够新,trunk需要pod在0.33及以上版本;

查看pod版本的命令:

pod --version

通过终端指令来操作: pod trunk register 你的邮箱地址 ‘用户名’ -verbose;

pod trunk register xx@qq.com '名字你喜欢就好' --description='描述' --verbose

该指令会发送一封验证邮件到你的邮箱,在邮箱里直接点击链接完成注册即可;如果不能点击,吧链接拷贝出来在浏览器打开即可;

如果多人维护pod 可以添加其他维护者:

pod trunk add-owner name xxx@xxx.com

修改注册的信息

4.上传之前执行pod lib lint 验证这个文件:

未引用第三方库时:pod lib lint --allow-warnings

引用地方库时(在后面加上--use-libraries,后面的pod trunk push也是一样):

pod lib lint --allow-warnings --use-libraries

(1)--verbose:表示显示全部的日志信息,建议加上这个,方便判断错误信息。

(2)--sources:如果我们在podspec里面依赖到一些私有的库之后,直接进行校验是会报错的提示找不到,这里加上我们的Spec仓库的地址告诉CocoaPods找不到的时候去哪里找。

(3)--allow-warnings:表示允许警告.

(4)--use-libraries:表示使用静态库或者是framework,这里主要是解决当我们依赖一些framework库后校验提示找不到库的时候用到。

5.通过终端指令来操作查看注册结果:

pod trunk me

6.发布自己的项目到pod上:

pod trunk push xx.podspec --allow-warnings

pod trunk push --allow-warnings

pod trunk push --allow-warnings --use-libraries

7.搜索自己的项目:

pod search

常见问题

Mac更新系统之后,命令行工具CommandLineTools丢失,使用的时候可能报错:

报错 xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun

解决:xcode-select --install

报错 xcrun: error: unable to find utility "simctl", not a developer tool or in PATH ) during validation

解决:

Xcode > Preferences > Locations Command Line Tools: 这一栏,一开始发现是空的,需要选择一个,重新执行一次命令,OK!

报错xcodebuild: Returned an unsuccessful exit code. You can use --verbose for more information.

设置这个:spec.ios.deployment_target = "8.0"

报错 file patterns: The source_files pattern did not match any file.

这个是在指定共享的类库时, 文件路径不对, 也就是设置s.source_files 字段时, 发生了错误, 这里的路径是相对于xx.podspec文件的, 如果是与xx.podspec同级的文件夹, 直接写文件夹名称即可,

如: s.source_files = “xx”

源文件所在目录名称要与xx.podspec文件保持同名,且在同一个层级。

如果有多级目录, 一定要逐级添加. 这里也可以这么写:

s.source_files = “xx/*.{h,m}”

如果你写的是swift的项目,你的项目里面一定要有一个.swift-version的配置文件。可以找一个github上面的框架对照者看。

报错[!] {“name”=>[“is already taken”]}

表示已经有一个重名的公有库存在,重新创建一个公有库,CocoaPods不允许有重名的公有库存在。