美文网首页
创建spec库

创建spec库

作者: 晴川历历汉阳树丶 | 来源:发表于2020-04-24 11:08 被阅读0次

一、创建私有specs库(cocoapods版本1.9.1)

cocoapods的specs的库使用以下命令可以查看,edu-git-cocoapods-specs是清华大学开源镜像站的库,而trunk是官方替代以前master的库

pod repo

edu-git-cocoapods-specs
- Type: git (master)
- URL:  https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git
- Path: /Users/akali/.cocoapods/repos/edu-git-cocoapods-specs

trunk
- Type: CDN
- URL:  https://cdn.cocoapods.org/
- Path: /Users/akali/.cocoapods/repos/trunk

创建一个私有的specs库可以使用以下命令

# pod repo add [库的名称] [库所在的git地址]
$ pod repo add test git@192.168.1.199:test/Specs.git

二、创建一个pod项目

使用命令行创建一个标准的pod代码库,在输入一系列参数后,就创建好名为Test的一个代码库

$ pod lib create Test

配置我们刚创建的本地pod库:
我只罗列了几个比较重要的配置项,其他的可以随便填。

Pod::Spec.new do |s|
    s.name             = 'iOSCommon' # 库名
    s.version          = '0.8.1' # 库的当前版本
    s.summary          = 'iOS基础插件库'  # 描述
       
    # 简介
    s.description      = <<-DESC
    iOS基础插件库,用于项目中开发创建的轮子。或者对已有三方的扩展。
    DESC
    
    s.source           = { :git => 'git@192.168.27.191:test/Test.git', :tag => s.version.to_s } #库的Git的地址,记住,不是spec仓库地址,是库本身的git地址,也可以先把库推到Git之后再来填这个。
    s.ios.deployment_target = '10.0'# 最低支持版本
    
    s.source_files = 'iOSCommon/Classes/**/*' # 开发文件存放地址
    s.dependency 'Alamofire' #依赖到的其他三方库

    s.resource_bundles = {
       'iOSCommon' => ['iOSCommon/Assets/*.png']
    }# 如果你的库用到了资源文件,如图片,视频什么的,这个也要配置
 end
end

配置完成,可以上传了。
在私有的git中创建Test的git远程仓库,并将本地的Test项目的远程仓库设置为刚建立的远程仓库,并将项目push到远程仓库

$ cd Test
$ git remote add origin git@192.168.27.191:test/Test.git
$ git add .
$ git commit -m "Initial commit"
$ git push -u origin master
# tag 值要和podspec中的version一致
$ git tag 0.1.0
# 推送tag到服务器上
$ git push --tags 

三、验证并上传podspec到指定的仓库

验证时,可以忽略警告。当出现Test passed validation.时,代表Test这个库已经验证通过。

$ pod spec lint --allow-warnings

上传时,也需要忽略警告。到此,我们的工作就已经完成了。

# pod repo push [repo库的名称] Test.podspec --sources=[repo库的地址] --allow-warnings
$ pod repo push test Test.podspec --sources=git@192.168.1.199:test/Specs.git --allow-warnings

四、使用我们的私有库

在我们项目TestPro的Podfile中使用我们的Test代码库。执行pod update,这样就成功的加载了我们所有需要的库

# 指定使用cdn库下载公有的库
source 'https://cdn.cocoapods.org/'
# 指定我们的私有库下载
source 'git@192.168.1.199:test/Specs.git'

platform :ios, '10.0'

target 'TestPro' do
  # Comment the next line if you don't want to use dynamic frameworks
  use_frameworks!

  # Pods for TestPro
  
  # 网络连接
  pod 'Moya'
  
  # 自动布局
  pod 'SnapKit'
  
  pod 'Test'

  target 'TestProTests' do
    inherit! :search_paths
    # Pods for testing
    
    pod 'Quick'
    pod 'Nimble'
    
  end

  target 'TestProUITests' do
    # Pods for testing
  end

end

五、更新私有库

更改的内容直接按照普通Git流程操作,推到远程仓库之后,记得更新一个私有库的tag,更新的tag一定要和私有库的.podspec文件里面的version保持一致。

# git tag [最新版本]
$ git tag 1.0.0

#推上去
$ git push --tags

然后就是再上传到我们的repo库。

在上传到repo时,如果你的私有库中引用了其他的开源库,在指定source是的时候,只写自己的repo库是不行的。因为指定了之后,git会直接在我们的repo库中去找那些开源库,就会报找不到库的错误。所以后面还要加上一个默认的repo库或者其他的镜像库,或者后面直接不指定sources。这时候git会在我们的repo的列表中一个一个的寻找,也会成功,但是耗时比较久。

$ pod repo push wwzl subspecTest.podspec --sources=git@192.168.27.199:fuyaohui/FSpecs.git,https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git --allow-warnings

六、subspec

subspec就是类似友盟的SDK,一个仓库里面包含了多个子仓库。在创建的时候,只需要创建一个pod库,然后再classes同等级目录下分别创建子库文件夹。然后在pod库的.podspec文件里面分别指向子库。

例:

    # 子库
    s.subspec 'WWZLBLEComponents' do |blue|
         #子库的文件路径
         blue.source_files = 'iOSCommon/WWZLBLEComponents/Classes/**/*'
        #子库的依赖
         blue.dependency 'iOSDFULibrary'
         #子库依赖的frameworks
         blue.frameworks = 'UIKit', 'MapKit'
     end

这样就建成了一个包含子库的pod库。
同时,子库也可以再拥有子库。

例:

    # 子库
    s.subspec 'WWZLBLEComponents' do |blue|
         #子库的文件路径
         blue.source_files = 'iOSCommon/WWZLBLEComponents/Classes/**/*'
        #子库的依赖
         blue.dependency 'iOSDFULibrary'
         #子库依赖的frameworks
         blue.frameworks = 'UIKit', 'MapKit'
         
         blue.subspec 'BaseBle' do |base|
             #子库的子库的文件路径
            base.source_files = 'iOSCommon/WWZLBLEComponents/BaseBle/Classes/**/*'
            #依赖
            base.dependency 'Toast'
         end

     end

需要注意的是,子库文件路径一定不能出错,否则会找不到文件,注意仔细核对。

七、subspec的使用

在引用的时候,跟普通的pod一样。

1.如果我们只用到了该库的摸一个子库功能,则可以

# pod '[库名]/[子库名]'
$ pod 'WWZLBLEComponents/BaseBle'

后面可以追加N个 “/ + [子库名]”。

2.如果我们用到了该库的所有功能,则可以

# pod '[库名]'
$ pod 'WWZLBLEComponents'

例:

# 指定使用cdn库下载公有的库
source 'https://cdn.cocoapods.org/'
# 指定我们的私有库下载
source 'git@192.168.1.199:test/Specs.git'

platform :ios, '10.0'

target 'TestPro' do
  # Comment the next line if you don't want to use dynamic frameworks
  use_frameworks!

  # Pods for TestPro
  
  # 自动布局
  pod 'SnapKit'
  
  #我们的私有库
  #如果用到了WWZLBLEComponents的所有子库
  pod 'iOSCommon/WWZLBLEComponents'
  
  #如果只用到了子库BaseBle
  pod 'iOSCommon/WWZLBLEComponents/BaseBle'
  
  target 'TestProUITests' do
    # Pods for testing
  end

end

公共库

私有库和公共库的区别就在于你的spec仓库是否是外网可访问的。如果你的spec库的地址是开放的,那就是公共库。如果是内网才能访问的,那就是私有库。

单独创建公共库是没有必要的,因为cocoapod有提供一个公共的spec仓库:cocoapods spec

了解完上面的私有库的创建推送之后,公共库就很简单了。区别就只在于最后一步:

如果你添加了trunk,就可以:

pod trunk push --allow-warnings

如果你没有添加trunk,直接推到master上:

pod master push --allow-warnings

相关文章

  • CocoaPods 私有化

    一、创建所需要的代码仓库 创建 Spec 私有索引库(ZFSpec),用来存放本地spec 创建模块私有库(ZFP...

  • 创建spec库

    一、创建私有specs库(cocoapods版本1.9.1) cocoapods的specs的库使用以下命令可以查...

  • 进阶-私有库创建

    4.私有库创建 创建私有 Spec Repo Spec Repo介绍 Spec Repo是所有的Pods的一个索引...

  • HCMediator组件化详解

    组件化创建流程库 组件化需要创建私有spec库(索引库)、HCMediator库(App中介库)、其他组件库 私有...

  • 创建自己的cocoapods库和spec

    1.创建本地代码库与线上仓库关联2.创建spec文件 pod spec create xxxx (xxx)项目名...

  • 创建 CocoaPods 私有库

    一、创建私有库 1.创建 github 仓库 2.创建私有 Spec Repo 先来说第一步,什么是 Spec R...

  • 组件化创建远程私有库笔记

    1、创建远程私有库、远程私有Spec库2、创建私有库模板pod lib caeate 库名字3、将文件拖到clas...

  • 组件化开发 - 创建 CocoaPods 私有库

    1. 创建Spec Repos Spec repo 包含了所有私有库的索引, 是所有 podspec 文件的仓...

  • Pod私有库制作

    ##Pod私有库制作 ####目录 +安装CocoaPods +创建远程内部私有Spec Repo仓库 +模板创建...

  • nuget 打包上传

    1、创建项目2、nuget spec -Force 生成nuspec 文件nuspec 引用库:依赖库

网友评论

      本文标题:创建spec库

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