iOS 远程私有库的搭建以及使用

思路:创建一个是远程私有spec仓库与本地私有spec仓库,也就是两个检索库,其他的和远程仓库没有太大的区别,区别是比远程公有仓库多两个检索库

总体内容

  • 1、创建 远程私有Spec仓库与本地 Spec Repo检索库
  • 2、创建Pod私有库所需要的项目工程文件,并上传到私有仓库
  • 3、创建Pod所对应的podspec文件, 并进行验证/测试
  • 4、创建JKCIOBase版本,并提交代码代码到JKCIOBase的远程仓库
  • 5、向私有的Spec Repo中提交podspec和远程私有spec仓库提交
  • 6、使用pod库来测试远程私有库的使用
  • 7、远程私有库与其他公有的混合使用
  • 8、远程私有库分支
  • 9、远程私有库添加依赖库
  • 10、资源文件 .buldle 的添加
  • 11、远程私有库内容更新
  • 12、fastlane 自动化更新pod库
  • 13、其他组内成员如何使用?

一、创建 远程私有Spec仓库与本地 Spec Repo检索库,远程的spec文件存在码云的私有仓库

  • 1.1、在 码云 创建私有的spec仓库,取名为JKCIOSpecs,一定要选择私有,不然谁都可以看到就没有什么意义了
    在码云创建自由的spec仓库,取名为JKCIOSpecs
  • 1.2、在本地添加一个spec仓库
    • (1)、查看本地spec路径

      pod repo
      
      查看本地spec路径
    • (2)、查看帮助信息,可以看到能够添加本地spec仓库的提示

      pod repo --help
      
      查看帮助信息,可以看到能够添加本地spec仓库的提示
    • (3)、开始在本地添加spec仓库
      具体的代码如下: JKCIOBase是本地spec仓库的名字,名字你自己可以随意取, git@gitee.com:JKWC/JKCIOSpecs.git是我们上面在码云创建的远程spec仓库的 ssh 路径,本地和远程关联起来

      pod repo add JKCIOBase git@gitee.com:JKWC/JKCIOSpecs.git
      

      添加后的效果如下

      command + shift +G 输入  ~/.cocoapods/repos
      
      相比之前多了一个JKCIOBase,也就是我们创建的本地私有spec仓库
      • 提示:如果你的公钥与私钥没有配置,那就设置下,在终端输入下面的代码,之后最后出现下图

        ssh-keygen
        
      6161546395798_.pic_hd.jpg
      • 去电脑上的 个人->.ssh 文件夹里面复制id_rsa.pub的内容到码云(在码云个人设置里面添加公钥),也可以使用快捷键:command + shift +G 输入 ~/.ssh 进入到 ssh文件里面
        `command + shift +G 输入 ~/.ssh`
      • 小提示:.ssh是隐藏文件,可以用 command+shift+.让隐藏文件显示出现,复制完记得再次输入command+shift+.让隐藏文件关闭,切记不要轻易删除任何隐藏文件
    • (4)、查看添加后的效果,在终端输入下面代码

      pod repo
      
    查看添加后的效果,在终端输入下面代码

二、创建Pod私有库所需要的项目工程文件(我们还在码云创建)

  • 2.1、我在码云创建的CIO时代的基础组件与功能组件库: JKCIOBase

    我在码云创建的CIO时代的基础组件与功能组件库: `JKCIOBase`

  • 2.2、把JKCIOBase克隆到本地,创建一个文件夹 JKRemoteLocal

    # 1、 cd导入路径
    cd 进入到JKRemoteLocal文件夹
    # 2、git clone 仓库到本地:clone自己仓库的地址
    git clone https://gitee.com/JKWC/JKCIOBase.git
    
  • 2.3、在本地 JKRemoteLocal/JKCIOBase 文件夹里面创建一个 JKCIOBase文件夹,同时创建一个JKCIOBaseDemo项目,与刚才创建的JKCIOBase同一个目录

    在本地 `JKRemoteLocal/JKCIOBase` 文件夹里面创建一个 `JKCIOBase`文件夹,同时创建一个`JKCIOBaseDemo`项目,与刚才创建的JKCIOBase同一个目录

  • 2.4、在与JKCIOBaseDemo 同级的文件夹JKCIOBase里面,我又创建了一个文件夹JKCategory,里面拖入了一个UIView的分类UIView+JKLayout

三、创建Pod所对应的podspec文件, 并进行验证

  • 3.1、在与JKCIOBaseDemo同目录下创建文件 JKCIOBase.podspec

    cd 进入到JKCIOBase
    

    提示:JKCIOBase 是第一个文件夹,也就是 JKCIOBase与JKCIOBaseDemo所在的文件夹

  • 3.2、创建spec文件

    pod spec create JKCIOBase
    
创建spec文件
  • 3.3、修改spec文件,下面是我修改的内容

    Pod::Spec.new do |s|
    
       s.name         = "JKCIOBase"
       s.version      = "0.0.2"
       s.summary      = "JKCIOBase."
       s.description  = "JKCIOBase是CIO时代的基础组件,后续还会继续增加"
    
       s.homepage     = "https://gitee.com/JKWC/JKCIOBase"
       s.license      = "MIT"
       s.author             = { "JoanKingWC" => "JoanKingWC@163.com" }
       s.ios.deployment_target = "8.0"
       s.source       = { :git => "https://gitee.com/JKWC/JKCIOBase.git", :tag => "#{s.version}" }
       s.source_files  = 'JKCIOBase/**/*.{h,m}'
       s.requires_arc = true
    
    end
    

    提示:
    1、s.summary 要比 s.description
    2、s.homepage写JKCIOBase在码云的首页

    `s.homepage`写JKCIOBase在码云的首页

    3、s.sourceJKCIOBase的代码地址即可
    `s.source`写 `JKCIOBase `的代码地址即可

    4、s.source_files 不要写错,这里的路径是以 spec所在的目录开始寻找的,也就是以 JKCIOBase.podspec所在的目录开始寻找, JKCIOBase与JKCIOBase.podspec同级目录,取JKCIOBase下所有文件夹与.h.m文件

    s.source_files  = 'JKCIOBase/**/*.{h,m}'   // ** 代表所有文件
    

    5、如果依赖什么库,就写上依赖,如下,依赖 sqlite3,代码如下

    s.library = "sqlite3"
    
  • 3.4、远程验证spec文件是否符合规则

    pod spec lint JKCIOBase.podspec
    

    提示:如果报错就看下我在远程公有库博客里面对于验证spec文件有问题的处理

四、创建JKCIOBase版本,并提交代码代码到JKCIOBase的远程仓库

  • 4.1、 cd JKCIOBase.podspec所在的目录

    cd JKCIOBase.podspec所在的目录
    
  • 4.2、创建版本 tag: 要与 JKCIOBase.podspec里面的版本号保持一致

    git tag '0.0.1'
    
  • 4.3、提交版本号

    git push origin 0.0.1
    
    • 提示:如果你提交tag失败了,请关联仓库,后面加你的仓库地址,切记是代码仓库地址,不是远程spec仓库地址

      git remote add origin https://github.com/JoanKing/JKCIOBase.git
      
    • 如果我们想推送到其他的分支,可以移除之前的分支,假如我们自己的分支叫 feature,那么查看是不是 feature,如果不是就删除掉,有关这一点不懂的可以下方评论

      // 查看当前的分支
      git branch
      // 查看自己的remote端名字
      git remote -v
      //  如果不是我们的分支,删除之前的  分支名 项目关联,下面以 origin 为例
      git remote rm origin
      // 添加关联
      git remote add feature https://github.com/JoanKing/JKGCDTimer.git
      
  • 4.4、提交本地JKCIOBase的内容
    打开Xcode,在 Source Control 里面 commit 选择同时提交到远程 JKCIOBase仓库

    打开Xcode,在 `Source Control` 里面 `commit` 选择同时提交到远程 `JKCIOBase`仓库

五、向私有的Spec Repo中提交podspec和远程私有spec仓库提交

  • 5.1、在里面我们已经验证过 spec文件是符合规定的,向私有的Spec Repo中提交 spec文件

    pod repo push JKCIOBase JKCIOBase.podspec 
    

    在此提示:JKCIOBase 是 私有本地私有 spec 索引库的名字,JKCIOBase.podspec 是我们要推送的索引文件

    提示:如果你在验证的时候有警告,只要没有报错可以加上 --use-libraries --allow-warnings,如下:

    pod repo push JKCIOBase JKCIOBase.podspec --use-libraries --allow-warnings
    
    向私有的Spec Repo中提交 spec文件
  • 5.2、我们验证下是否成功

    进入本地 JKCIOBase 仓库,上面的没有报错,在JKCIOBase里面出现JKCIOBase仓库就是成功了,JKCIOBase里面会存着每个版本的spec文件,这里展示了 0.0.2 版本的 spec 文件

    command + shift +G 输入 ~/.cocoapods/repos
    
    我们验证下是否成功
  • 5.3、远程私有spec仓库提交
    其实写这个5.3是多余的,因为在5.2里面,我们把spec文件提交到本地的时候,同时也就提交到了我们创建的远程 spec仓库,也就是我们在 1.1 创建的 JKCIOSpecs,我们看下JKCIOSpecs里面,存放也是spec的各个版本,如下图

六、使用pod库来测试远程私有库的使用

  • 6.1、在桌面创建一个项目 JKRemoteLocalTest

  • 6.2、创建Podfile文件

    cd JKRemoteLocalTest文件夹
    pod init
    
  • 6.3、修改 Podfile文件的内容

    source 'git@gitee.com:JKWC/JKCIOSpecs.git'
    
    platform :ios, '9.0'
    
    target 'JKRemoteLocalTest' do
    
        use_frameworks!
    
        pod 'JKCIOBase'
    
    end
    

    提示:source 'git@gitee.com:JKWC/JKCIOSpecs.git'是远程spec仓库的地址,不可少,因为 pod 'JKCIOBase'是要从 source资源里面去找spec文件来下载相应的版本的 JKCIOBase

  • 6.4、查看导入的效果


    JKCIOBase成功导入

七、远程私有库与其他公有的混合使用

  • 7.1、如下 Podfile文件 内容,导入 SDWebImage 是不会成功的

     source 'git@gitee.com:JKWC/JKCIOSpecs.git'
    
     platform :ios, '9.0'
    
     target 'JKRemoteLocalTest' do
    
        use_frameworks!
    
        pod 'JKCIOBase'
        pod 'SDWebImage'
    
    end
    
  • 7.2、解决 7.1 导入 SDWebImage 不成功的问题

    • 分析 SDWebImage 是属于pod 公有库的资源,在 source 'git@gitee.com:JKWC/JKCIOSpecs.git'是不可能找到的,所以要在公有库的资源里面寻找,查看公有库资源路径

      pod repo
      
      pod repo查看spec路径
      • 如下写 Podfile 文件才是正确的

        source 'git@gitee.com:JKWC/JKCIOSpecs.git'
        source 'https://github.com/CocoaPods/Specs.git'
        
        platform :ios, '9.0'
        
        target 'JKRemoteLocalTest' do
        
            use_frameworks!
        
            pod 'JKCIOBase'
            pod 'SDWebImage'
        
        end
        
  • 7.3、查看导入远程私有库与公有库的效果


    查看导入远程私有库与公有库的效果

八、远程私有库分支

  • 8.1、这个有关分支的问题,我在远程共有库已经阐述过了这里我就在JKCIOBase添加一个JKKit
    在`JKCIOBase `添加一个JKKit
  • 8.2、在spec文件里面设置一下JKCategoryJKKit分支的东西
    `JKCategory`与`JKKit`分支
  • 8.3、把版本改为 0.0.6,打tag提交代码如下

    #  cd 进入spec所在的目录
    cd 进入 JKCIOBase所在的目录,也就是spec文件所在的目录
    # 打0.0.6的tag
    git tag '0.0.6'
    # 提交 tag到 远程私有仓库
    git push origin 0.0.6
    # 使用xcode提交代码到远程仓库
    
  • 8.4、提交spec文件到本地私有spec仓库(也就是我们创建的JKCIOBase)

    pod repo push JKCIOBase JKCIOBase.podspec --use-libraries --allow-warnings
    
    提交spec文件到本地私有spec仓库(也就是我们创建的JKCIOBase)
  • 8.5、在使用 command + shift +G 输入 ~/.cocoapods/repos里面的 JKCIOBase就可以看到里面多了一个新的版本,我这里提交的是 0.0.6

    查看是否提交成功

  • 8.6、测试一下是否设置分支成功

    cd 进入上面测试`JKRemoteLocalTest`
    # 更新库
    pod update 
    
分支创建成功

九、远程私有库添加依赖库

  • 9.1、给JKCIOBase添加依赖库 'AFNetworking''MJRefresh',给JKKit添加一个依赖库 Masonry
    给`JKCIOBase`添加依赖库 `'AFNetworking'`与`'MJRefresh'`,给`JKKit`添加一个依赖库 `Masonry`
  • 9.2、打tag,提交spec等等和 里面的一样,不再写了
  • 9.3、查看是否依赖第三方库成功。同样更新 JKRemoteLocalTest
    依赖第三方库成功

十、资源文件 .buldle 的添加

  • 10.1、什么是Bundle文件?
    答:简单理解,就是资源文件包。我们将许多图片、XIB、文本文件组织在一起,打包成一个Bundle文件。方便在其他项目中引用包内的资源。
  • 10.2、Bundle文件的特点?
    答:Bundle是静态的,也就是说,我们包含到包中的资源文件作为一个资源包是不参加项目编译的。也就意味着,bundle包中不能包含可执行的文件。它仅仅是作为资源,被解析成为特定的2进制数据。
  • 10.3、bundle的优点
    • (1)、因为bundle在目录结构中的层次结构,一个bundle只包含资源文件。因此,你可以使用相同的文件接口像打开其他类型文件一样打开bundle文件
    • (2)、bundle的结构使它可以很容易的支持本地化,你可以非常容易的添加或者移除本地资源
    • (3)、bundle可以保持在多种格式的的系统中, 如HFS,HFS+和AFP的multiple fork formats;UFS,SMB,NFS 的single-fork formats
  • 10.4、我们创建一个 JKCIOBase.bundle 的资源文件
    • <1>、新建一个工程macOS的Bundle项目


      新建一个工程macOS的Bundle项目
    • <2>、命名为:JKCIOBase.bundle


      命名为:JKCIOBase.bundle
    • <3>、删除文件夹和info.plist文件


      删除文件夹和info.plist文件
    • <4>、删除Build Settings里的Packaging的info.plist的文件地址


      删除Build Settings里的Packaging的info.plist的文件地址
    • <5>、设置 Base SDK 为 iOS


      设置Base SDK为iOS
    • <6>、把 Build Active Architecture Only 修改为 NO,否则生成的库就只支持当前选择设备的架构

    • <7>、bundle中的图片格式修改
      iOS 创建Bundle时放入的图片资源(.png)在默认配置下会被转为.tiff格式,使用的时候找不到。因为在iOS中创建bundle时会用一个“hack”,为了使所有的运行需要更改一个配置。找到bundle的工程,修改:

      Buld Settings > COMBINE_HIDPI_IMAGESNO

      Buld Settings > COMBINE_HIDPI_IMAGES and set toNO

    • <8>.可选配置
      作为资源包,仅仅需要编译就好,无需安装相关的配置,设置 Skip InstallYES,清除 Installation Directory 路径信息。

      Buld Settings > `Installation Directory`
    • <9>、最关键是把工程目录下的Build SettingsCode Signing Identity 的苹果研发者证书换成 iOS研发者证书

      `Build Settings`下`Code Signing Identity`
    • <10>.添加要打包的资源文件进到文件夹,编译

    • <11>、进入到 JKCIOBase.bundle

      进入到 `JKCIOBase.bundle`

    • <12>、把JKCIOBase.bundle复制到其他的iOS项目

      把`JKCIOBase.bundle`复制到其他的iOS项目
    • <13>、图片的使用

      • 第一种直接拖入项目使用,取路径如下

        • OC

          "JKCIOBase.bundle/icon_scan"
          

          加载图片

          UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(20, 100, 40, 40)];
          imageView.image = [UIImage imageNamed:@"JKCIOBase.bundle/icon_scan"]
          [self.view addSubview:imageView];
          
        • Swift

          let path = Bundle.init(for: ViewController.self).path(forResource: "Frameworks/xcrbasekit.framework/xcrbasekit", ofType: "bundle")
          let bundle = Bundle.init(path: path!)
          let image = UIImage.init(named: "xbb_bigV", in: bundle, compatibleWith: nil)
          
          let userImageView = UIImageView(frame: CGRect(x: 100, y: 100, width: 100, height: 100))
          userImageView.image = image
          view.addSubview(userImageView)
          
          • 对于上面参数的理解

            let path = Bundle.init(for: #className.self).path(forResource: "#bunleName", ofType: "bundle")
            let bundle = Bundle.init(path: path!)
            let image = UIImage.init(named: "#pageName", in: bundle, compatibleWith: nil)
            

            className:bundle所在的类的类名
            bunleName:bundle名称
            pageName:要使用的图片名称

      • 第二种封装成SDK再使用,取路径如下

        • OC

          "Frameworks/JKOCProjectTool.framework/JKCIOBase.bundle/icon_scan"
          

          加载图片

          UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(20, 100, 40, 40)];
          imageView.image = [UIImage imageNamed:@"Frameworks/JKOCProjectTool.framework/JKCIOBase.bundle/icon_scan"]
          [self.view addSubview:imageView];
          
        • Swift,取资源调用 <14> 里面的函数

          let userImageView = UIImageView(frame: CGRect(x: 100, y: 100, width: 100, height: 100))
          userImageView.image = UIImage(named: getBundleResource(bundName: "xcrbasekit", resourceName: "xbb_bigV", bundleType: 1))
          view.addSubview(userImageView)
          
    • <14>、把图片路径封装成宏

      • OC

        #define JKOCProjectToolBundlePath(file) [@"JKOCProjectTool.bundle" stringByAppendingPathComponent:file]
        #define JKOCProjectToolFrameworkBundlePath(file) [@"Frameworks/JKOCProjectTool.framework/JKOCProjectTool.bundle" stringByAppendingPathComponent:file]
        #define JKOCProjectToolBundleImageName(file)  [UIImage imageNamed:JKOCProjectToolBundlePath(file)] ? :[UIImage imageNamed:JKOCProjectToolFrameworkBundlePath(file)]
        
      • Swift 写成函数

        /// 获取资源文件
        /// - Parameter bundName: bundle的名字
        /// - Parameter resourceName: 资源的名字,比如图片的名字
        /// - Parameter bundleType: 类型:默认 0 是在自己模块下使用,1 在其他模块中使用
        func getBundleResource(bundName: String,resourceName: String,bundleType: Int = 0) -> String {
           if bundleType == 1 {
               return "Frameworks/\(bundName).framework/\(bundName).bundle/\(resourceName)"
           }
           return "\(bundName).bundle/" + "\(resourceName)"
        }
        

十一、远程私有库内容更新

远程私有库内容更新的更新其实和里面一样的步骤,修改JKCIOBase里面的内容,更改spec内的版本号,有要修改的就修改内容,打版本tag,提交tag到远程私有仓库,提交spec文件打破本地spec仓库与远程私有spec检索仓库

十二、fastlane 自动化更新pod库

  • 12.1、什么是自动化?
    答:通过简单的一条命令, 去自动执行一组固定操作,比如:测试、打包上传审核、分发 等自动化使用场景

  • 12.2、Fastlane 简介
    Fastlane是一个ruby脚本集合

  • 12.3、Fastlane使用概念

    • lane(航道) : 好比一道题
    • Action机制:好比做一道题分很多步,每一步都是一个 Action,专业的解释:Action是Fastlane自动化流程中的最小执行单元,体现在Fastfile脚本中的一个个命令,比如:cocoapodsgit_add等等,而这些命令背后都对应一个用 Ruby 编写的脚本。
    • 目前所有的 Action: Actions描述链接源码链接
    • 常用action:
      • produce 创建可用于 iTunes Connect 和 Apple Developer Portal 的 iOS app。
      • cert 自动创建和维护 iOS 代码签名证书。
      • sigh 创建、更新、下载和修复 provisioning profiles。
      • snapshot 自动将 App 屏幕截图本地化到每种设备上。
      • frameit 将屏幕截图适配到适当的设备屏幕大小。
      • gym 创建和打包 iOS app。
      • deliver 上传屏幕截图、元数据和 App 到 App 商店。
      • PEM 自动创建和更新 Push 通知的 profile。
  • 12.4、Fastlane 安装

    sudo gem install fastlane
    sudo gem install -n /usr/local/bin fastlane
    

    提示:要求ruby版本最新

    brew update
    brew install ruby
    
    • 提示:如果报错:-bash: brew: command not found
    • 解决上面报错的方法:mac 终端下,执行以下命令,即可安装brew: /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    • 在终端环境下,brew --version 查看brew的版本,也可以验证brew是否安装成功
  • 12.5、在项目使用 Fastlane

    • <1>、在终端 cd 进入项目根目录

    • <2>、fastlane init

      fastlane init`

      • (1)、📸自动截图
      • (2)、👩✈️自动测试分发到TestFlight
      • (3)、🚀自动化App Store分发
      • (4)、🛠手动设置 - 手动设置项目以自动执行任务

      提示1:看自己的需求,我这里选的4
      提示2:如果不需要实现上传等操作, 其实我们可以直接在工程目录下, 创建一个fastlane文件夹, 在文件夹内部创建"使用文件"(Fastfile文件),在成功后 fastlane 文件夹里面会有一个 Fastfile 文件

    • <3>、 在fastlane 文件夹里面的 Fastfile 文件中, 描述不同的"航道",我们这里以下面的步骤为主

      提示:在代码转化为 action的过程都是在 Actions描述 里面查找的

      • (1)、提交代码到本地暂缓区,git add .,对应的fastlane 命令如下

        git_add(path: ".")   
        

        提示: . 代表当前文件下所有的内容

      • (2)、提交代码到本地仓库,git commit -m '提交内容说明' ,对应的fastlane 命令如下,提交说明的信息,我们可以定义成参数传进来

        git_commit(path: ".", message: "提交代码")
        
      • (3)、提交代码到远程仓库,git push origin master,对应的fastlane 命令如下

        push_to_git_remote
        
      • (4)、给版本打tag,git tag 版本号,对应的fastlane 命令如下

        add_git_tag(
            tag: 版本号
        )
        

        提示:版本号我们传进来

      • (5)、提交所有的版本 git push --tags,对应的fastlane 命令如下

        push_git_tags
        
      • (6)、删除指定tag: 本地删除 git tag -d 0.0.1,远程删除: git push origin :0.0.1,对应的fastlane 命令如下

        remove_tag(tag:版本号)
        
      • (6)、验证spec文件是否有报错,允许有警告,pod spec lint --allow-warnings,对应的fastlane 命令如下

            pod_lib_lint(allow_warnings: true)
        
      • (7)、如果你在验证的时候有警告,只要没有报错可以加上 --use-libraries --allow-warnings就可以提交:pod repo push 本地私有库名 组件名.podspec --use-libraries --allow-warnings,,对应的 fastlane 命令如下

        pod_push(path: "#{组件名}.podspec", repo: "本地库名", allow_warnings: true)
        
      • (8)、pod install 对应的 fastlane 命令如下

        cocoapods(
            clean: true,
            podfile: "."
        )
        

        提示:podfile后面的路径是以 fastlane文件夹为准需要 Podfile 文件的,如果Podfile与fastlane文件夹同目录,那么就写:podfile: ".",其中 .代表当前目录

  • 12.6、fastlane文件夹下Fastfile文件的命令完整的步骤如下:

    default_platform(:ios)
    
       platform :ios do
          desc "pod远程提交"
          lane :custom_lane do |options|
          # 参数一:提交代码的备注
          commit_message = options[:message]
          # 参数二:版本号
          commit_tagName = options[:tagName]
          # 参数三:spec 文件的名字
          commit_specName = options[:specName]
          # 参数四:仓库的本地检索库的名字
          commit_repositoryName = options[:repositoryName]
          # 1、提交代码到本地暂缓区
          git_add(path: ".")
          # 2、提交代码到本地仓库
          git_commit(path: ".", message: "#{commit_message}")
          # 3、提交代码到远程仓库
          push_to_git_remote
          # 4、验证tag是否存在,如果存在, 应该删除本地标签和远程标签
          # 如果判断标签是否存在
          if git_tag_exists(tag: commit_tagName)
                 UI.message("发现tag:#{commit_tagName} 已经存在, 即将执行, 删除动作 🚀")
                 # 执行删除本地/远程标签
                 remove_tag(tag:commit_tagName)
          end
          # 5. git tag 标签名称
          add_git_tag(
                tag: commit_tagName
          )
          # 6. 提交tag到服务器  git push --tags
          push_git_tags
          # 7. 验证spec文件是否有问题
          pod_lib_lint(allow_warnings: true)
          # 8. 推送 spec 文件到本地和服务器
          pod_push(path: "#{commit_specName}.podspec", repo: "#{commit_repositoryName}", allow_warnings: true)
    
          end
     end
    

    使用方式:把fastlane文件夹拖到和spec文件同一目录下,cd 进入 spec 文件所在的目录,执行下面的命令

    命令: fastlane custom_lane message:提交内容说明 tagName: 版本号 specName: spec文件名字 repositoryName: 仓库名字

    提示:一定要有 fastlane文件夹,里面有Fastfile文件

十三、其他组内成员如何使用?

  • 13.1、分配权限给同事

    把创建的远程代码私有库以及远程spec私有库都添加你同事进来,让他注册码云账号,添加这两个远程私有库

  • 13.2、添加本地私有库
    重复 一 里面的 1.2在本地添加一个spec仓库

  • 13.3、配置Podfile文件


    配置Podfile文件

远程公有库
本地私有库

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容