iOS开发之Framework上传到github 配置Cocoa
1、查看pod注册信息
$ pod trunk me
如果无注册信息,需要注册
$ pod trunk register XXX@XXX.com 名字 --verbose
注册成功之后你会看到如下确认邮件的提示:
[!] Please verify the session by clicking the link in the verification email that has been sent to ***@**.com
那么赶紧打开你的小邮箱验证吧,打开邮箱看到如下:
111.png
然后复制中间的链接放在浏览器打开即可,出现如下提示表明验证成功:
222.png
再查看注册信息
$ pod trunk me
结果如下:
$ pod trunk me
- Name: B****u
- Email: 74******5@qq.com
- Since: January 10th, 21:49
- Pods:
- HJAppSpSDK
- Sessions:
- January 16th, 20:49 - May 25th, 21:50. IP: 123.108.109.81
- January 19th, 00:33 - May 27th, 00:34. IP: 123.108.109.81
- January 19th, 00:35 - May 27th, 00:36. IP: 123.108.109.81
- January 19th, 00:42 - May 27th, 00:43. IP: 123.108.109.81
注意:
其中Pods这一项中的HJAppSpSDK表示的是我的pods上已经有一个HJAppSpSDK项目了,如果你成功添加了现在的这个项目会再多一个的
2、配置podspec文件
进入需要配置项目目录下也就是.git仓库的同级目录,创建一个XXX(SDK名称).podspec的文件,最好不要直接touch一个空文件,然后直接去网上扒源码,这样会出现我最后面提到的问题,所以按照我的步骤来是不会出错的:
$ pod spec create HJAppSpSDK
打开vi HJAppSPSDK.podspec文件
s.name = 'HJAppSpSDK'
s.version = "0.0.1"
s.summary = "A short description of HJAppSpSDK."
s.homepage = "http://EXAMPLE/HJAppSpSDK"
s.license = "MIT (example)"
# s.license = { :type => "MIT", :file => "FILE_LICENSE" }
# s.platform = :ios
# s.ios.deployment_target = "5.0"
s.source = { :git => "http://EXAMPLE/HJAppSpSDK.git", :tag => "#{s.version}" }
s.source_files = "Classes", "Classes/**/*.{h,m}"
s.exclude_files = "Classes/Exclude"
# s.resource = "icon.png"
# s.resources = "Resources/*.png"
s.ios.vendored_frameworks = 'FrameworkTest/Tool/FrameworkTest.framework'
注意问题:
上面我需要使用到的:
1>s.version版本一定要跟tag一致
2>s.summary不改的话会有警告
3>s.description要填写,不填写报错,如果嫌麻烦,可以用#注释掉
4>s.homepage填写你的github上的项目地址
5>s.license根据你github创建项目的时候使用的证书,一般选用MIT,后面的文件名LICENSE是谷歌创建的时候的文件名,你可以到你的项目中查找对应的文件名填写上
6>s.source后面填写github上的项目地址,请务必正确填写
7>s.resource后面的是你上传bundle的相对路径,我是把bundle放在FrameworkFramework目录下的,请按照我的填写来找到对应你自己的填写
8> s.ios.vendored_frameworks这一栏可能没有,可能有,没有就加上,这个是找到对应framework的路劲,我是放在FrameworkFramework下的,请按照我的填写来找到对应你自己的填写
9>s.frameworks这个是系统的framework,那么我们自己的Framework里面用到了哪些系统的framework就加上
上面我没有使用到的,其他的:
1>s.dependency这个是填写依赖的第三方库,比如说AFN:
s.dependency 'AFNetworking', '~> 2.6.1'
2>s.requires_arc表示是否是ARC,如果是那么就打开填写true,如下:
s.requires_arc = true
3>s.source_files表示的是源码文件,这个是我们的开源框架了,我们这里并没有就没写,如果我们要搞开源的框架。那么路径和我们的bundle那样找路径是一样的
4>s.library或者s.libraries指的是我们需要依赖系统的库,lib库,那么这个就看我们需要添加什么就写什么。比如说我们经常喜欢添加sqite
s.library = "libiconv.tbd"
s.libraries = "libiconv.tbd", "libsqlite3.tbd"
3、验证podspec文件
进入到XXX.podspec 同级目录下
3-1、先本地验证
pod lib lint xxx.podspec --verbose --use-libraries --allow-warnings
备注:--verbose:抛出错误信息
--use-libraries: 使用私有.a 或者framework
--allow-warnings: 忽略警告
本地验证通过之后,再把代码,文件提交到服务器
git add -A && git commit -m "version 1.0.0"
git tag '1.0.0' //和上面.podspec一致
git push --tags
git push origin master
3-2、远程验证
$ pod spec lint
或者(--verbose 可以显示详细错误信息)(--use-libraries 有引入私有.a / framework 包)
$ pod spec lint --use-libraries --verbose
或者 (--allow-warnings 忽略警告信息继续操作)
$ pod spec lint --allow-warnings
提交到Cocoapods 在项目目录下也就是.git仓库的同级目录也就是现在的XXX.podspec文件的同级目录下
$ pod trunk push XXX.podspec
或者(--allow-warnings 忽略警告提交)
$ pod trunk push xxx.podspec --allow-warnings
如果出现如下提示,说明上传成功了:
--------------------------------------------------------------------------------
🎉 Congrats
🚀 FrameworkTestTool (1.0.1) successfully published
📅 January 19th, 02:59
🌎 https://cocoapods.org/pods/FrameworkTestTool
👍 Tell your friends!
--------------------------------------------------------------------------------
然后查看下pod信息:
$ pod trunk me
结果如下:
$ pod trunk me
- Name: B****u
- Email: 74******5@qq.com
- Since: January 10th, 21:49
- Pods:
- HJAppSpSDK
- XXXX (新添加的pod库)
- Sessions:
- January 16th, 20:49 - May 25th, 21:50. IP: 123.108.109.81
- January 19th, 00:33 - May 27th, 00:34. IP: 123.108.109.81
- January 19th, 00:35 - May 27th, 00:36. IP: 123.108.109.81
- January 19th, 00:42 - May 27th, 00:43. IP: 123.108.109.81
4、使用Pod
创建项目,项目目录下
pod init
这个时候你更新下本地的repo仓库:
$ pod update
更新好之后,再查询下
$ pod search FrameworkTestTool
或者
$ pod search 'FrameworkTestTool'
查询结果如下:
-> HJAppSpSDK (1.0.1)
Test For HJAppSpSDK.
pod 'HJAppSpSDK', '~> 1.0.1'
- Homepage: https://github.com/K*********n/HJAppSpSDK.git
- Source: https://github.com/K*********n/HJAppSpSDK.git
- Versions: 1.0.1 [master repo]
生成Podfile 文件,修改Podfile文件,添加如下条目:
pod 'XXX'
或者
pod 'XXX', '~> 1.0.1'
然后接下来打开白色的*******.xcworkspace文件,就能看到了pods目录中文件了
5、问题汇总
1、swift 创建的xxx.framework文件上传pod的时候需要注意
(1)供OC、swift同时使用需要暴露方法前加‘objc’
oc使用需要objc.png
(2)pod lib lint xxx.podspec --verbose --use-libraries --allow-warnings
本地pod检测失败,报如下错误,说明swift 库链接失败(错误如下)
errore.png
需要在framework工程中修改配置(如果OC项目pod引入该framework 源文件(非xx.framework)报错,也要检测下这个配置是否设置为YES)
swif配置.png
2、变更电脑(电脑系统重置)、同事共同维护一个pod 发布权限添加,遇到的的问题
OLD EMAIL :最初原始注册邮箱
USERNAME :用户名
POD REP NAME : Pods 某一个项目名称
VERSION: 版本号
OWNER-EMAIL : 开发者邮箱
1、个人电脑重制,如何找回权限
用原邮箱登录(确认库拥有者身份)
pod trunk register [OLD EMAIL] [USERNAME]
然后需要在注册邮箱邮件中点击确认验证
然后在终端查看自己注册信息
pod trunk me
就可以看到原来的个人信息
trunk.png
2、添加同事管理项目
pod trunk add-owner [POD REP NAME] [OWNER-EMAIL]
pod trunk remove-owner [POD REP NAME] [OWNER-EMAIL]
添加后可以看到Owners成员变化
添加/移除某个库的拥有者,上文有提到该命令。
你必须先运行过 pod trunk register 登录过,并且操作的是你账号拥有的库。
3、常用 pod trunk 功能汇总
3-1、注册&登录。
pod trunk register [EMAIL] [USERNAME]
示例 :pod trunk register xxx@**.com 'user name'
在你的 Mac 上只需要运行一次,然后去邮箱中点击确认邮件的链接即可,当然你也可以使用该命令在不同的账号中来回切换。
3-2、发布库
pod trunk push [PATH]
示例:pod trunk push XXX.podspec
我一般在本地操作,PATH 一般就是 PodRepName.podspec。不过官网文档上说 PATH 缺省是当前目录,所以 cd 到库的本地目录,然后直接 pod trunk push 应该也是可以滴!
3-3、查看自己的账号信息,以及账号拥有的仓库。
pod trunk me
- Name: b**k
- Email: 7***35@qq.com
- Since: September 9th, 19:19
- Pods:
- AXOSDK
- A***Framework
- Sessions:
- September 9th, 19:19 - January 27th, 2021 05:47. IP: 222.66.93.20
- September 13th, 02:03 - Unverified. IP: 180.108.201.123
- September 13th, 02:10 - Unverified. IP: 180.108.201.123
- September 22nd, 19:24 - January 28th, 2021 19:25. IP: 222.66.93.20
3-4、查看某个库的信息,包括拥有者、各版本版本号及发布时间
pod trunk info AXOSDK
AXOSDK
- Versions:
- 0.0.1 (2020-09-18 07:14:33 UTC)
- 0.0.2 (2020-09-21 11:47:43 UTC)
- Owners:
- b**k <7***35@qq.com>
3-5、不赞成使用,让某个库过期
pod trunk deprecate [POD REP NAME]
暂时还没有尝试,仅做记录