制作cocoapods私有库程序员

iOS Pod Spec 发布流程

2020-10-29  本文已影响0人  咖啡奶茶都要

第一步:封装功能生成 .framework

1.打开Xcode,新建工程。

不要选择“Application”,选择“Framework & Library”。选择第一个,然后Next。

2.更改参数

在TARGETS下选中工程,在Build Settings下更改几个参数。

Dead Code Stripping —> NO

Mach-O Type —> Static Library

3.增加armv7s

在Architectures下增加armv7s,并选中。将Build Active Architecture Only 设置为NO。

4.设置Headers

将你要公开的头文件拖至Public下,要隐藏的放在Private或者Project下,当然,隐藏的头文件就无法再被引用。

5.打包Framework

1.选中模拟器,编译程序

2.选中测试机,编译程序

3.在finder中找到framework文件

4.通过终端命令将两个framework合为一个模拟器和真机都可使用的framework。

打开控制台输入 lipo -create iphoneos下framework的路径 simulator下framework的路径 -output 新的路径,这样就完成了模拟器和真机版本的合并,新路径下的framework就是你合并后的文件,将这个文件名字改成和你未合并之前的Test一样的名字,放到framework文件夹下,替换掉原来的framework文件

第二步:创建一个公有 Pod 库

1.注册 COCOAPODS 用户

$ pod trunk register {YOURMAIL} '{YOURNAME}' --verbose

2.去邮箱点击验证链接

此时您的邮箱中应该有一封主题是 [CocoaPods] Confirm your session. 的邮件,点击邮件中的链接进行验证。

3.验证是否注册成功

$ pod trunk me

Name: YOURNAME

Email: YOURMAIL

Since: May 23rd, 2018 03:02

Pods:

PodName

Sessions:

June 20th, 08:17 - October 26th, 08:39. IP: xxx.xxx.xxx.xx

4.创建一个 Git 仓库

仓库主页

进入您创建的仓库后,地址栏中的地址:

https://github.com/{YOURGITHUBNAME}/{YOURPODNAME}

git 地址

点击 Clone or download 按钮,就可以看到了。选择 HTTPS 地址:

https://github.com/{YOURGITHUBNAME}/{YOURPODNAME}.git

5.创建 Pod 库

在终端中执行: pod lib create {YOURPODNAME},接下来按照提示,根据自己的情况进行选择就可以了。

必须要修改的:

s.summary: pod 摘要

s.description: pod 描述

s.homepage: pod 在 github 中的地址

s.author: 作者姓名及邮箱

s.source: pod 的 git 地址

6.验证 YOURPODNAME.podspec

$ pod lib lint

7.提交代码

$ git add .

$ git commit -m "创建 pod 库"

$ git push

8.创建并提交 tag

$ git tag -a 0.1.0 -m '创建 pod 库'

$ git push origin --tags

9.提交 pod

$ pod trunk push

恭喜您,您已经成功的将您创建的 pod 库推送到了官方 pod 库!

坑点 & 解决方案

1. 解决pod lib lint/repo push不支持i386编译&只能真机运行的库

1.pod lib lint 命令添加 --skip-import-validation 参数,lint 将跳过验证 pod 是否可以导入。

2.pod trunk push 命令添加 --skip-import-validation 参数,push 将跳过验证 pod 是否可以导入。

2.本库若依赖三方库和文件

spec添加如下:

文件例:

spec.source_files = 'Reachability.{h,m}'

framework例:

spec.framework = 'SystemConfiguration'

pod依赖例:

spec.dependency 'SomeOtherPod'

上一篇下一篇

猜你喜欢

热点阅读