iOS开发之Framework上传到github 配置Cocoapodss

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]

暂时还没有尝试,仅做记录

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335