iOS开发常用知识点

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

2020-09-15  本文已影响0人  nero_i

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]

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

上一篇下一篇

猜你喜欢

热点阅读