Git库支持cocoapods指南

因为需要做组件化,想把自己的部分代码封装framework库,提交到git,给客户直接cocapod集成,所以尝试把git的代码支持cocoapod,发现一路都是坑,所以记录一下.这里主要是我的cocoapod更新出了问题,所以导致各种坑,这里做个记录方便下次再进坑.
这里以一个UIColor+RGB的分类为例子,创建一个ZSYTool的第三方库,可以通过pod 'ZSYTool'直接导入工程使用.

步骤

1. 创建一个public的repo

我创建的地址是 : https://github.com/elloren123/ZSYTool.git

2. 创建工程
  1. 创建一个空文件夹: ZSYTool
  2. 终端cd到这个文件夹,执行命令pod lib create ZSYTool
    说明:这里的 ZSYTool 是在创建仓库时的 ZSYTool.git;
  3. pod会克隆一个实例到文件夹中;然后会提示进行文件配置,一下是一个配置的说明:
Pod::Spec.new do |spec|

 
  spec.name         = "A_section"

  #发版版本号,每更新一次代码就改变一次版本号
  spec.version      = "0.0.1"

  #一个简单的总结,随便写
  spec.summary      = "AViewController抽离"

 
  #描述,随便写 但是要比 s.summary 长度长
  spec.description  = <<-DESC
  模块化开发,抽离的AViewController界面,彻底解耦,用于快速集成;
                   DESC

  #你的 git 仓库首页的网页 url,注意并不是 https/ssh这种代码仓库地址
  spec.homepage     = "https://gitee.com/elloren123/a_section"
  
  #直接写 MIT
  spec.license      = "MIT"
  
  #你是谁
  spec.author             = { "ZSY" => "[email protected]" }
  
   #一定要写上,不写的话,执行 pod lib lint 验证项目的时候会报找不到 UIKIT 等框架错误
   spec.platform     = :ios, "9.0"

  
  #这里就是你 git 仓库的 https/ssh 地址了
  spec.source       = { :git => "https://gitee.com/elloren123/a_section.git", :tag => "#{spec.version}" }


  #这里的文件夹下的内容就是这个 pods 被pod install 的时候会被下载下来的文件,不在这个文件夹,将不会被引用
  # Classes 目录和.podspec 目录是平级的。
  #你可以随便指定文件夹名称,只要这个文件夹是真实存在的
  #Classes/**/*.{h,m},表示 Classes 文件夹及其文件夹下的所有.h,.m 文件。
  spec.source_files  = "A_section/Classes/**/*.{h,m}"
  #spec.exclude_files = "Classes/Exclude"

  
  #资源文件地址,下面的所有.png资源都被打包成 s.name.bundle
  #spec.resource  = ['Images/*.png','Sounds/*']

  

end

下面是我的配置:


配置pod实例工程

这时的文件架构如下:
Snip20201028_5.png
  1. 这个时候你需要做的就是把你要上传的代码放到ZSYTool/Classes里面
    这里我就测试,就放了 UIColor+RGB.hUIColor+RGB.m到上图的Classes中;

  2. 编辑podspec文件
    打开.podspec文件,修改下版本等信息,配置一下,具体含义前面说了,我的如下:

Snip20201028_6.png

这个截图中,我把版本改成0.0.1了,同时我的配置有错误,homepage地址不对,应该是https://github.com/elloren123/ZSYTool,也就是之前创建的仓库地址

  1. 处理podspec同级中的gitignore文件
    打开隐藏文件gitignore:


    Snip20201028_7.png

然后在末尾添加ZSYTool/Pods

  1. Example中导入库
    终端cd到Example文件夹下执行pod update:
    Snip20201028_9.png

完成后,查看Example项目中,出现了我添加的一个UIColor的分类;
如果要修改或者后续需要更新,只需要在Example里面修改上图区域里的代码,然后pod update就把代码改好了;

  1. 添加Demo
    Example主要还是让我们添加一个例子:
#import "ZSYViewController.h"

#import 

@interface ZSYViewController ()

@end

@implementation ZSYViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    self.view.backgroundColor = [UIColor randomColor];
    
}

可以运行检查效果;

  1. 链接库
    回到终端,cd到项目目录,这里目录不要搞错:
    Snip20201028_12.png

    然后输入 pod lib lint --allow-warnings
Snip20201028_13.png

看到上图,说明成功了;

  1. 把工程上传到git,这里使用的是sourcetree
    大致就是添加本地已有仓库--->然后编辑,绑定远端仓库地址:https://github.com/elloren123/ZSYTool.git--->然后push上去;
    具体流程这里不解释了;

  2. 给代码打上tag,这个tag要和我们之前创建的podspec文件中的版本一样,我的改成了0.0.1;

    Snip20201028_17.png

  3. 配置cocoapods
    cd到工程目录,然后 pod spec lint --allow-warnings;(前提是已经有了cocoapod账号,如果没有,则终端输入: pod trunk register [email protected] ‘yourCocoapodName’ --description='描述信息' ,然后去邮箱激活,激活后回来验证下: pod trunk me)

我这里执行出现错误:


Snip20201028_18.png

就是我上面提到的我的git地址在podspec文件中配置错误导致的,修改后再次push提交git仓库;然后再次: pod spec lint --allow-warnings;
需要输入仓库的账号密码:

Snip20201028_19.png

成功!!!!!!✨✨✨✨✨✨✨✨✨✨✨✨

  1. 把配置文件上传到cocoapods
    执行pod trunk push ZSYTool.podspec --allow-warnings
    报错了:
    Snip20201028_20.png

    这个报错是因为我一开始创建的库为私有库,把所有库改成公开即可;

操作方法是:找到对应的库—>Setting—>下拉到:Danger Zone-->change visibility

修改成公开的再次提交:
Snip20201028_22.png

这里看到成功的信息,给出了库的地址:https://cocoapods.org/pods/ZSYTool,通过网页打开,发现了我们提交的库;

刚刚提交的库,通过https://cocoapods.org/ 地址去查看,可能找不到,估计是更新没有这么快;

  1. 验证

终端执行 pod search ZSYTool

image.png

上面步骤没错的话,如果没有搜索到,第二天再试试0.0

  1. 创建demo集成ZSYTool

本来到此,更新下pod,应该就完了,只是我的pod更新失败,所以才有下面的一系列操作


pod更新

创建完,执行pod install报错:

lepu@Mac-mini pod_test % pod install
Analyzing dependencies
[!] Unable to find a specification for `ZSYTool (~> 0.0.2)`

You have either:
 * out-of-date source repos which you can update with `pod repo update` or with `pod install --repo-update`.
 * mistyped the name or version.
 * not added the source repo that hosts the Podspec to your Podfile.

执行pod repo update:
报错:Failed to connect to GitHub to update the CocoaPods/Specs specs repo - Please check if you are offline, or that GitHub is down

于是终端输入/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

发现也报错:/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refused

于是访问网站:https://www.ipaddress.com/ 查询raw.githubusercontent.com的真实IP,我查的是199.232.28.133,
然后终端: sudo vim /etc/hostsi进入编辑:
在末尾加入: 199.232.28.133 raw.githubusercontent.comESC结束编辑 :wq保存退出

然后再次终端输入: /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

漫长的等待….,然后会提示 Press RETURN to continue or any other key to abort 是否按 RETURN 继续,直接回车,让输入密码,输入后会进入下载;

这里我等了一个多小时才完成,所以不能着急0.0

然后终端输入: brew update 这个也是很长时间,30分钟左右

然后终端输入: brew install openssl

成功后,查看成功的打印提示,找到
If you need to have [email protected] first in your PATH run:这句需要执行的指令,我的是下面的,大家的可能不相同,所以要去复制上面放入打印;
终端输入(这个是我的):echo 'export PATH="/usr/local/opt/[email protected]/bin:$PATH"' >> ~/.zshrc

然后输入: source ~/.zshrc ,这里的~/.zshrc 是我的,大家要根据自己的替换;

然后输入:brew install rbenv ruby-build

成功后,在终端分别执行以下命令:
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.zshrc
echo 'if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi' >> ~/.zshrc
source ~/.zshrc
rbenv install --list

得到版本信息:


Snip20201030_6.png

这里安装2.7.2版本,执行: rbenv install 2.7.2

此时,再进行 pod repo update,在更新了,不再是之前的访问无效报错了

更新成功后,在工程中进行 pod install,发现 ZSYTool 导入成功!!!! 到此,完美解决

你可能感兴趣的:(Git库支持cocoapods指南)