首页 > 其他分享 >创建自己的 Cocopod仓库

创建自己的 Cocopod仓库

时间:2022-10-10 17:26:17浏览次数:243  
标签:git guosongweideiMac SWHelloWorld 仓库 创建 Cocopod guosongwei pod png

创建自己的 Cocopod仓库

前言

在 iOS 开发中,我们经常会使用到一些第三方库,如 AFNetworking、SDWebImage 等,一般使用 CocoaPods 来统一管理。那么如何把自己写的类库上传到 CocoaPods,使之可以像 AFNetworking 一样使用呢?即项目的模块化、组件化。

详细步骤

1.在本地创建 pod 库
  • 打开终端,建一个路径,我们以桌面为例,在桌面上创建一个名为 SWHelloWorld 的 pod 库
guosongwei@guosongweideiMac ~ % cd desktop
guosongwei@guosongweideiMac desktop % pod lib create SWHelloWorld

  • 回车之后,终端会询问你几个哲学的问题,按需求填写即可
#选择开发平台
What platform do you want to use?? [ iOS / macOS ]
 > iOS

#选择编程语言
What language do you want to use?? [ Swift / ObjC ]
 > ObjC

#在你的项目中是否创建一个 demo 工程,为了方便测试,我选择了 Yes
Would you like to include a demo application with your library? [ Yes / No ]
 > Yes  

#测试框架选择哪一个
Which testing frameworks will you use? [ Specta / Kiwi / None ]
 > None

#要不要做视图测试
Would you like to do view based testing? [ Yes / No ]
 > Yes

#类前缀名
What is your class prefix?
 > SW

image

安装 pod 成功.png

到这里 pod 库就创建完成了,它会自己打开刚才创建的 pod 库。目录结构如下图:

image

SWHelloWorld.png

2.添加库文件
  • 我们创建一个简单的类 SWTestManager,声明一个打印方法,以便后面检测是否可用。
#import "SWTestManager.h"

@implementation SWTestManager
- (void)testPrint:(NSString *)text {
    NSLog(@"SWTestManager print == %@",text);
}

@end

  • 将库文件放入 Classes 文件夹里

image

SWTestManager.png

  • 在 Example 路径下执行 pod install 命令,看看是否能将刚刚添加的库文件引入到工程中
guosongwei@guosongweideiMac desktop % cd /Users/guosongwei/Desktop/SWHelloWorld/Example 
guosongwei@guosongweideiMac Example % pod install

image

终端命令执行.png

  • pod install 执行完成后可以在工程中看到添加的文件已经被成功引入

image

SWHelloWorld.png

  • 运行测试
    在 SWViewController.m 里面导入 SWTestManager.h 文件,在 viewDidLoad 调用一下方法:
//
//  SWViewController.m
//  SWHelloWorld
//
//  Created by Guo-Sir on 04/08/2021.
//  Copyright (c) 2021 Guo-Sir. All rights reserved.
//

#import "SWViewController.h"
#import "SWTestManager.h"

@interface SWViewController ()

@end

@implementation SWViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    [[[SWTestManager alloc] init] testPrint:@"真帅!"];
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end


运行一下:

image

运行.png

看到控制台输出的信息了,证明我们本地运行代码没问题,SWTestManager 可以调用!

3. 编辑 SWHelloWorld.podspec 文件

PS:github、码云…都行,这里以 github 为例

  • 首先在 github 创建一个新的 repository,点击右上角➕,选择 New repository

image

New repository.png

image

Create a new repository.png

  • 填写设置好之后,点击 Create repository 按钮,创建完成

image

finshed.png

  • 修改 SWHelloWorld.podspec 文件
    右击 SWHelloWorld.podspec 选择打开方式“文本编辑”打开
#
# Be sure to run `pod lib lint SWHelloWorld.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             = 'SWHelloWorld'
  s.version          = '0.1.0' // 版本号必须和 tag 一致
  s.summary          = 'SWHelloWorld.'  // 说明,改一下,默认提交时会报错

# 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      = <<-DESC
TODO: Add long description of the pod here.
                       DESC

  s.homepage         = 'https://github.com/Guo-Sir/SWHelloWorld'  // git 仓库主页
  # s.screenshots     = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
  s.license          = { :type => 'MIT', :file => 'LICENSE' }
  s.author           = { 'Guo-Sir' => '[email protected]' }
  s.source           = { :git => 'https://github.com/Guo-Sir/SWHelloWorld.git', :tag => s.version.to_s }  // git 仓库地址
  # s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'

  s.ios.deployment_target = '9.0'

  s.source_files = 'SWHelloWorld/Classes/**/*'  // 类库文件代码路径

  # s.resource_bundles = {
  #   'SWHelloWorld' => ['SWHelloWorld/Assets/*.png']
  # }

  # s.public_header_files = 'Pod/Classes/**/*.h'
  # s.frameworks = 'UIKit', 'MapKit'
  # s.dependency 'AFNetworking', '~> 2.3'
end

  • 验证配置是否正确:
    终端进入根目录 SWHelloWorld,执行命令:pod lib lint SWHelloWorld.podspec ,(如果有警告请尝试:pod lib lint SWHelloWorld.podspec --allow-warnings) 提示 SWHelloWorld passed validation. 表示正确。
guosongwei@guosongweideiMac ~ % cd /Users/guosongwei/Desktop/SWHelloWorld 
guosongwei@guosongweideiMac SWHelloWorld % pod lib lint SWHelloWorld.podspec --allow-warnings

image

pod lib lint SWHelloWorld.podspec.png

至此,配置完成了

4. 项目发布

cd 到项目路径下,执行 git 相关命令,将项目发布到上一步创建的 github 里

guosongwei@guosongweideiMac Example % cd /Users/guosongwei/Desktop/SWHelloWorld 
# 添加远程地址,即上面创建 github 项目的地址
guosongwei@guosongweideiMac SWHelloWorld % git remote add origin https://github.com/Guo-Sir/SWHelloWorld.git
# 添加文件
guosongwei@guosongweideiMac SWHelloWorld % git add .
# 提交本地,并写描述
guosongwei@guosongweideiMac SWHelloWorld % git commit -a -m "第一次提交 版本为 0.1.0" 
# --allow-unrelated-histories
# git pull origin maste 会失败 ,提示:fatal: refusing to merge unrelated histories
# 原因是远程仓库 origin 上的分支 master 和本地分支 master 被 Git 认为是不同的仓库,所以不能直接合并,需要添加 --allow-unrelated-histories
guosongwei@guosongweideiMac SWHelloWorld % git pull origin master --allow-unrelated-histories
# 推送到 github 的 SWHelloWorld 项目的 master 分支上
guosongwei@guosongweideiMac SWHelloWorld % git pull origin master
# 提交版本号
guosongwei@guosongweideiMac SWHelloWorld % git tag 0.1.0
# push 到远程分支
guosongwei@guosongweideiMac SWHelloWorld % git push origin 0.1.0

5.注册 CocoaPods Trunk

在 CocoaPods Trunk 中注册,用邮箱注册,注册成功会有邮件返回。

guosongwei@guosongweideiMac SWHelloWorld % pod trunk register [email protected]

等注册的邮箱收到 CocoaPods 的确认邮件。点击邮件中的验证链接:

image

邮件.png

页面跳转,提示 Ace, You're set up. 然后才可以进行下一步(如果是升级也需要执行这一步!)。

image

Ace, You're set up.png

6.发布自己的类库

终端进入根目录 SWHelloWorld,执行命令:pod trunk push SWHelloWorld.podspec --verbose
(如果有警告请尝试:pod trunk push SWHelloWorld.podspec --verbose --allow-warnings)

guosongwei@guosongweideiMac SWHelloWorld % pod trunk push SWHelloWorld.podspec --verbose --allow-warnings

执行完上述命令之后可以去 github 上查看是否已经推送上去了 https://cocoapods.org/pods/SWHelloWorld

image

Guo-Sir/ SWHelloWorld

这里我们可以看到 github 上已经推上去了

7.尝试使用
  • 我们新建一个项目并引用我们的 pod 库,podfile 里添加如下:
pod 'SWHelloWorld',:git =>"https://github.com/Guo-Sir/SWHelloWorld.git"

  • 执行pod命令:pod install
    我们可以看到工程里已经把自己的类库 pod 下来了,完美!
    以后就可以在任何工程直接使用自己发布的类库了

image

success.png

好了,以上就是创建私有库的教程,希望能对大家有所帮助。如有错误,欢迎批评指正!

最后附上官方教程网站:https://guides.cocoapods.org/making/making-a-cocoapod.html

标签:git,guosongweideiMac,SWHelloWorld,仓库,创建,Cocopod,guosongwei,pod,png
From: https://www.cnblogs.com/alerson/p/chuang-jian-zi-ji-de-cocopod-cang-ku.html

相关文章

  • 使用 idea2021(汉化版)创建一个java程序
            建好以后是这样的 在左边的项目栏建好的项目下右键【src】,选择【新建】,选择【Java类】  输入文件名HelloWorld按回车。即可创建完成......
  • 21. JS对象的创建和使用
    1.前言JavaScript是一种面向对象的编程语言,在JavaScript中几乎所有的东西都是对象。因此,要想有效的使用JavaScript,首先需要了解对象的工作原理以及如何创建并使用对......
  • mklink创建一个硬连接
    创建目录或文件符号或硬链接。语法:mklink[[/d]|[/h]|[/j]]<link><target>参数参数说明/d创建目录符号链接。默认情况下,此命令将创建文件符号链接。......
  • Idea 创建文件夹时将目录由点连接改为树状显示
    问题详情:idea中多个文件夹用.连接看着难受 想分开   问题如图: 解决办法:   如图点这个按钮把HideEmptyMiddlePackages去掉√就好了......
  • 【Gradle】Gradle配置全局阿里云镜像仓库
    一、参考资料Gradle配置阿里云仓库_梁海江的博客​​Gradle的配置操作以及配置阿里云镜像和整合本地Maven仓库-简书​​​​MavenPublishPlugin​​ ......
  • gitee仓库上传文件的步骤
    一:Git是什么?Git是一种代码托管技术。在开发中,Git是一种代码托管技术,很多代码托管平台也是基于Git来实现的。Git可以帮我们做到很多的事情,比如代码的版本控制,分支......
  • 97、配置yum源仓库服务器
    (服务端(双(外,内)网卡)——客户端(内网))YUM主要用于自动安装、升级rpm软件包,它能自动查找并解决rpm包之间的依赖关系。要成功的使用YUM工具安装更新软件或系统,就需要有......
  • HugeGraph创建propertyKey出现The name of property key can't be null
    1、发生错误场景(开发环境)importjava.io.IOException;importjava.util.Iterator;importjava.util.List;importjava.util.Map;importcom.baidu.hugegraph.driver......
  • IDEA 创建一个Web项目
    IDEA创建一个Web项目1.File->New->Project NewWindow是可以创建一个新的窗口2.引入一个WebApplication  3.在Web下建立一个lib,用于存放sql 4.把s......
  • 云原生数字化转型与金融信创建设,鱼和熊掌可兼得
    2022年9月17日上午,2022第五届双态IT乌镇用户大会顺利召开。本次峰会由ITSS分会、银保信科技(北京)有限公司、 证券基金行业信息技术应用创新联盟指导,ITSS数据中心......