美文网首页iOS技术类
cocopods远程公有库的创建(GitHub)

cocopods远程公有库的创建(GitHub)

作者: 你duck不必呀 | 来源:发表于2021-05-25 17:16 被阅读0次

1.在GitHub上添加公有仓库:

GitHub是你的代码保存的实际仓库,也可以是其他公开仓库,这样不仅可以通过pod引入你的组件,还可以在GitHub直接download你的源码使用
登录github,点击个人头像,Your repositories,新建公有仓库:


image.png

2.在本地创建创建Pod项目工程文件:

通过pod lib create创建的工程比较完整(包含demo工程,podspec文件),如果是本地已有组件也可以在根目录直接创建podspec文件,关于podspec文件后面会介绍

已有组件,并且通过git管理,可以只创建podspec文件:

pod spec create [NAME]

如果从0开始创建,选一个合适地方,创建仓库目录:例如:Documents 创建pod目录

cd Documents/pod

创建本地仓库publicTool

pod lib create publicTool

按照要求选择,平台,语言,demo等

Cloning `https://github.com/CocoaPods/pod-template.git` into `publicTool`.
Configuring publicTool template.
------------------------------

To get you started we need to ask a few questions, this should only take a minute.

If this is your first time we recommend running through with the guide:
 - https://guides.cocoapods.org/making/using-pod-lib-create.html
 ( hold cmd and click links to open in a browser. )


What platform do you want to use?? [ iOS / macOS ]
 > iOS

What language do you want to use?? [ Swift / ObjC ]
 > objc

Would you like to include a demo application with your library? [ Yes / No ]
 > yes

Which testing frameworks will you use? [ Specta / Kiwi / None ]
 > specta

Would you like to do view based testing? [ Yes / No ]
 > yes

What is your class prefix?
 > pb

创建成功后会在本地出现仓库(publicTool)目录,并且Xcode会自动打目录下的Example工程:
已包含了podspec后面无需在创建


image.png

我们可以将自己写好的组件代码拷贝到Classes下面,替换生成的ReplaceMe.m

image.png

生成的Example包含Podfile文件

use_frameworks!

platform :ios, '9.0'

target 'publicTool_Example' do
  pod 'publicTool', :path => '../'

  target 'publicTool_Tests' do
    inherit! :search_paths

    pod 'Specta'
    pod 'Expecta'
    pod 'FBSnapshotTestCase'
    pod 'Expecta+Snapshots'
  end
end

pod 'publicTool', :path => '../' 会去上层目录下找publicTool目录

3.测试本地库:

进入到Example文件下,执行pod install

pod install

完成之后,会在Example下多处熟悉的Pods.xcodeproj project

publicTool下会出现刚才拷贝进去的文件,然后我们引入到Example测试没问题就下一步

4.修改.podspec

通过pod lib create创建的本地库,默认创建了.podspec
podspec是该组件的描述文件,pod 搜索就是根据.podspec文件信息查找的

在pod/publicTool目录下.podspec 修改它如下:

#
# Be sure to run `pod lib lint publicTool.podspec' to ensure this is a
# valid spec before submitting.
#
# Any lines starting with a # are optional, but their use is encouraged
# To learn more about a Podspec see https://guides.cocoapods.org/syntax/podspec.html
#

Pod::Spec.new do |s|
  s.name             = 'publicTool' # 组件名
  s.version          = '0.1.0' # 版本 tag
  s.summary          = '这是一个测试公共组件.' #摘要

# This description is used to generate tags and improve search results.
#   * Think: What does it do? Why did you write it? What is the focus?
#   * Try to keep it short, snappy and to the point.
#   * Write the description between the DESC delimiters below.
#   * Finally, don't worry about the indent, CocoaPods strips it!

  s.description      = "这是个测试" # 描述,尽可能长一些,不然会警告

  s.homepage         = 'https://github.com/gebulin-boot/public-specs' #主页,可以填你的github主页地址
  # s.screenshots     = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
  s.license          = { :type => 'MIT', :file => 'LICENSE' }
  s.author           = { 'uname@email.com' }
  s.source           = { :git => 'https://github.com/gebulin-boot/public-specs.git', :tag => s.version.to_s } #你的远程库 后面的版本好从s.version读取的
  # s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'

  s.ios.deployment_target = '9.0'

  s.source_files = 'publicTool/Classes/**/*'
  
  # s.resource_bundles = {
  #   'publicTool' => ['publicTool/Assets/*.png']
  # }

  # s.public_header_files = 'Pod/Classes/**/*.h'
  # s.frameworks = 'UIKit', 'MapKit' 
  # s.dependency 'AFNetworking', '~> 2.3' #依赖的第三方库 有多个就多行写
end

以上修改没问题,下一步

5.提交代码到远程仓库(GitHub仓库),和平常提交代码的操作一样:

进入仓库目录下:

cd publicTool

查看提交状态

git status

提交到本地:

git add .
git commit -m '提交信息'

关联到你的远程仓库:

git remote add origin https://github.com/gebulin-boot/public-specs.git

推送到远程仓库(GitHub):

git push origin master

如果你平时是通过ssh key推送代码到GitHub,可能会报如下错误:

remote: Permission to gebulin-boot/public-specs.git denied to LUV-LL.fatal: unable to access 'https://github.com/gebulin-boot/public-specs.git/': The requested URL returned error: 403

publicTool/.git/config中url改成你的仓库ssh地址即可

以上没问题,下一步

6.打上标签(版本号)

组件问题了,接下来要给组件打上tag,这里的tag要和podspec中s.version一致

查看:

git tag

添加:

git tag '0.1.0'

推送到你的远程仓库:

git push --tags
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0To github.com:gebulin-boot/public-specs.git * [new tag]         0.1.0 -> 0.1.0

7.检查podspec,推送podspec到pod库:

进入仓库目录

cd publicTool

检查.podspec是否有问题

pod spec lint

可能会报这样的错:

 -> publicTool (0.1.0)    - WARN  | description: The description is shorter than the summary.    - ERROR | [iOS] unknown: Encountered an unknown error (/usr/bin/xcrun simctl list -j devicesxcrun: error: unable to find utility "simctl", not a developer tool or in PATH) during validation.Analyzed 1 podspec.[!] The spec did not pass validation, due to 1 error and 1 warning.

XCode未设置Command line tools,在XCode -> Preferences... -> Locations中设置Command line tools。

最后出现以下提示代表检查通过:

publicTool.podspec passed validation.

推送到pod CDN库:
CocoaPods 自 1.8 版本开始默认使用 trunk CDN (cdn.cocoapods.org/) 作为 spec 的源,这样避免了把几个G的specs库克隆到本地

trunk目录位于.cocopods/repos目录下
pod trunk push publicTool.podspec [PATH] PATH缺省 默认是trunk目录

pod trunk push publicTool.podspec

第一次可能会报错:

[!] You need to run `pod trunk register` to register a session first.

按照要求注册cocopods账号即可:

pod trunk register your email@163.com 'uname' --description='cocopods description'

然后邮箱会收到:一份cocopods官方发的邮件,打开邮箱链接后不用对邮件做什么,此时可以再次执行推送命令:
以上没问题,可以通过pod search 搜索到你的库

相关文章

网友评论

    本文标题:cocopods远程公有库的创建(GitHub)

    本文链接:https://www.haomeiwen.com/subject/wydcsltx.html