美文网首页
CocoaPods 远程私有库

CocoaPods 远程私有库

作者: 尼古拉斯超仔 | 来源:发表于2022-04-16 13:47 被阅读0次

    前言

    随着iOS APP越来越复杂,功能越来越多,对于iOS项目的工程化要求也越来越高了,对于复杂的APP一般都需要对项目进行模块化管理,由此引出了iOS组件化开发。
    iOS组件化开发很重要的一个技术点:CocoaPods私有库的搭建。
    私有库由两部分构成项目工程仓库和索引仓库。

    文章较长,先列一下操作步骤

    一、创建一个私有的索引库(spec repo)的远程库。
    二、创建一个私有的存放项目工程的远程库。
    三、创建索引库(spec repo)。
    四、创建项目工程,并上传到远程私有仓库。
    五、向私有的索引库(spec repo)远程库提交索引(podspec)。
    六、使用自己创建的私有库。
    七、版本更新。
    八、.podspec文件说明。

    详细步骤

    (注:github创建私有项目是收费的,所以这里选择免费的“码云”)
    一、创建一个私有的索引库(spec repo)的远程库。

    1.创建索引远程库存放本地索引。


    image.png
    二、创建一个私有的存放项目工程的远程库。
    image.png
    三、创建索引库(spec repo)。

    前往文件夹 ~/.cocoapods/repos,打开终端,在终端切换到当前目录下,然后进行pod repo add操作,在终端输入:

    pod repo add CZSpec https://gitee.com/__/czspec.git
    

    注:https://gitee.com/__/czspec.git是刚创建好的索引库(spec Repo)的私有远程库地址。

    image.png
    pod repo add操作后会clone远程索引库到 ~/.cocoapods/repos文件夹下
    image.png
    四、创建项目工程,并上传到远程私有仓库。

    创建本地pod所需的项目工程文件,在终端,cd切换到某个目录下,这里我选择的是桌面上文件夹Test目录下的,然后执行

    pod lib create CZProject
    
    image.png

    超时了多执行几次命令就好了

    pod lib create CZProject
    
    image.png image.png

    然后进入到CZProject里面找到Classes中的"ReplaceMe.m"文件删除,然后将自己所需要的文件放到这里目录下


    image.png

    接下来最重要的一步,也是很容易忽略的一步,不然提交后检查会出现很多问题。
    具体步骤:

    (1)cd 到Example文件下,然后pod install下,更新Example项目的pod。


    image.png

    (2)打开example中的项目,找到项目中的podspec文件,更改spec。


    image.png
    修改完成后,cd 到CZProject目录下,然后验证本地podspec文件有效性,终端命令如下
    pod lib lint CZProject.podspec
    
    image.png

    报了个警告提示用--allow-warnings 忽略,再次执行命令

    pod lib lint CZProject.podspec --allow-warnings
    

    本地项目上传到远程仓库中,将本地项目与远程仓库相关联,使用终端命令:

    git remote add origin 远程仓库地址
    

    然后将本地项目推送到远端

    git push origin master
    
    image.png

    push到远程的时候出现这种问题,然后先pull ,出现下面问题(即拒绝合并不相关的历史,确实本地新加的内容还从未和线上连接过)



    之后输入如下命令(即告诉允许合并不相关的历史内容):

    git pull origin master --allow-unrelated-histories
    
    image.png

    解决冲突后上传到远程仓库


    image.png

    这样远程仓库就有我们本地的项目了


    image.png
    image.png
    五、向私有的索引库(spec repo)远程库提交索引(podspec)。

    首先需要给CZProject 打标签,打的标签值要与podspec文件中的版本号一致


    image.png image.png

    然后进行.podspec文件本地和远程有效性的验证,终端命令如下:

    pod spec lint CZProject.podspec
    
    image.png

    同样报了个警告,再次执行命令,忽略警告

    pod spec lint CZProject.podspec --allow-warnings
    

    注意:
    如果私有库中依赖私有库,则验证podspec文件的时候需要加上–sources参数,否则会出现找不到你依赖的私有库,示例:

    pod spec lint yourProjectName.podspec -- sources='git@xxx.xxx.xxx.xxx:/yourProjectName.git,https://github.com/CocoaPods/Specs 
    

    向私有的索引库(spec Repo)远程仓库中提交podspec
    使用命令把私有库添加到私有远程库中。

     pod repo push CZSpec CZProject.podspec --verbose --allow-warnings 
    
    image.png

    前往文件夹 ~/.cocoapods/repos去查看CZSpec目录下的文件如下:

    image.png

    之后,可以通过终端命令查看第三方框架仓库源,命令如下:

    pod repo
    
    image.png

    到此,创建私有库成功了。

    六、使用自己创建的私有库。

    创建一个新的工程,在podfile 使用source 指定:


    image.png

    然后跳转到项目目录,执行终端命令pod install,之后就可以使用了。


    image.png
    image.png
    七、版本更新。

    找到工程库打开CZProject.xcworkspace

    1.修改.podspec文件中的版本号
            s.version          = '0.1.1' //修改0.1.1版本,不能是之前的版本,要不提交不成功
    
    2.项目上传到远程仓库
    
            $ git add . 
    
            $ git commit -m “XX”  
    
            $ git push
    
    3.打tag并上传
    
            $ git tag '0.1.1'  
    
            $ git push --tags
    
     4.验证pod并提交到pod
    
             $ pod spec lint CZProject.podspec --allow-warnings    //远程本地pod验证
    
             $  pod repo push CZSpec CZProject.podspec --verbose --allow-warnings    //提交pod  CZSpec 是之前生成的本地库名 CZProject.podspec 工程索引文件
    
    
    八、.podspec文件说明。
    Pod::Spec.new do |s|
    # 项目的名称
      s.name             = 'CZProject'
    # 项目的版本号,通过项目git的tag标签进行对应,这里的标签代表的版本
      s.version          = '0.1.0'
    # 项目简单的描述信息
      s.summary          = 'A short description of CZProject.'
    # 项目的详细描述信息,注意,这里的文字的长度,一定要比上面的s.summary长,不然会认为格式不合格
      s.description      = <<-DESC
    TODO: Add long description of the pod here.
                           DESC
    # 项目的网页主页信息,这里可以直接写自己的远程仓库的主页的地址
      s.homepage         = 'https://www.baidu.com'
    # 截图
      # s.screenshots     = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
    # 开源协议
      s.license          = { :type => 'MIT', :file => 'LICENSE' }
    # 作者信息
      s.author           = { 'chaozai' => '164125801@qq.com' }
    # 项目地址,这里不支持ssh的地址,验证不通过,只支持HTTP和HTTPS,最好使用HTTPS
      s.source           = { :git => 'https://gitee.com/___/czproject', :tag => s.version.to_s }
    # 多媒体介绍地址
      # s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'
    # 支持的平台及版本
      s.ios.deployment_target = '9.0'
    # 代码源文件地址,**/*表示Classes目录及其子目录下所有文件,如果有多个目录下则用逗号分开,如果需要在项目中分组显示,这里也要做相应的设置
      s.source_files = 'CZProject/Classes/**/*'
    # 资源文件地址
      # s.resource_bundles = {
      #   'CZProject' => ['CZProject/Assets/*.png']
      # }
    # 公开头文件地址
      # s.public_header_files = 'Pod/Classes/**/*.h'
    # 所需的framework,多个用逗号隔开
      # s.frameworks = 'UIKit', 'MapKit'
    # 依赖关系,该项目所依赖的其他,当在加载的时候也会一块把相关的依赖的库加载下来,如果有多个需要填写多个
      # s.dependency 'AFNetworking', '~> 2.3'
    end
    
    

    相关文章

      网友评论

          本文标题:CocoaPods 远程私有库

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