iOS 创建自己的私有库

作者: e5311f1a36e5 | 来源:发表于2017-04-05 18:30 被阅读175次

    概述

    1. 如果看本文有些吃力,可以先练习我发布的创建开源库
    2. 本文是私有库的创建,非公有库创建
    3. 私有库创建使用gitlab演示
    4. 容易出问题的仍然是podspec文件
    5. 创建过程中需要多次输入密码,这多个密码是相同的,都是生成ssh key时设置的密码

    一. 参考文章

    二. 踩过的坑

    • ERROR | [iOS] file patterns: The source_files pattern did not match any file.

    • 使用下面的就可以了

                s.source_files = "privateLibraryTestDemo/**/*"
      
    • 或者有可能是代码文件没有放到本地仓库里的问题,把代码文件放到本地仓库里就可以了

    三. 流程简介

    1. 创建一个framework的项目等待制作私有库,并把私有库代码放到这个工程里
    2. 在可以创建私有库的地方创建一个code repository
    3. 在可以创建私有库的地方创建一个spec repository
    4. 如果没有注册trunk,就去注册trunk
    5. 克隆code repository到本地并添加私有库代码文件
    6. 创建并编辑三个私有库配置文件
    7. 验证podspec文件是否正确,如果有问题要确保更改完成,否则无法继续进行
    8. 上传所有文件到远端的库中并打tag
    9. 创建本地的私有仓库文件
    10. 将配置文件push到远端专门存储配置文件的仓库中
    11. 确认已经制作完成并使用

    四. 详细流程

    1. 编写完成私有库项目的代码,并创建一个framework的项目等待制作私有库
    • 代码注意创建成一个Cocoa Touch Framework工程就可以了,代码怎么写你开心就好(手动斜眼)
    2. 在可以创建私有库的地方创建一个code repository
    • 首先明确code repository和spec repository的区别
    • code repository是代码仓库,我们把包代码上传到这个仓库。
    • spec repository是配置仓库,所有的配置按照包名、版本号分门别类的存放在这个仓库。这个仓库只用来存放podspec文件,不存放代码。

    • 这里我使用的是gitlab,除了gitlab之外还可以使用github(私有需要收费) 、开源中国、CODING、Bitbucket、CSDN code都可以,所以这里使用gitlab来介绍所有的操作

    • 选择图中的加号,然后填写下面第二个图中的信息,这里只需要填写project path和Description就可以了,别的东西不需要操作,最后点击create project就可以完成了

    点击图中的加号新建一个仓库
    编辑新仓库的信息
    3. 在可以创建私有库的地方创建一个spec repository
    • 步骤同第二部是完全一样的
    • 这里建议使用不同的仓库名字来区别这两个不同作用的仓库
    4. 如果没有注册trunk,就去注册trunk
    • 使用下面的命令检查是否注册过

      pod trunk me
      
    • 如果注册过,就跳过第四步进行第五步,没有就使用下面的命令注册trunk,注意替换掉邮箱账号和用户名

    • 163邮箱可能收不到邮件,qq邮箱亲测非常快就可以收到验证邮件

       pod trunk register testMail@qq.com "testName" --verbose 
      
    • 然后复制验证邮件里面的链接并打开,此时注册工作就完成了

    5. 克隆code repository到本地并添加私有库所需文件
    • cd到你要克隆仓库的本地目录

    • 克隆远端仓库到本地,后面的链接是你代码仓库的链接,可以使用ssh和http的链接

        git clone http://njGitrepo/xxx/caculatemaker.git
      
    • 此时打开本地仓库会看到里面没有文件,可是使用下面的命令打开隐藏文件,接着需要重启一下 Finder,就可以看到有一个.git文件,到这里这一步就结束了

    • 打开隐藏的命令:
      defaults write com.apple.finder AppleShowAllFiles -bool true

    • 关闭隐藏的命令:
      defaults write com.apple.finder AppleShowAllFiles -bool false

    • 此时把私有库代码工程放到这个文件夹里面

    6. 创建并编辑三个私有库配置文件
    • 注意在这几个文件里面的链接不能用ssh的链接

    • cd到克隆下来的那个文件内

    • 首先是创建README.md文件,这个文件在github中也有,是项目的说明文件,根据自己的项目做一些说明

    • 创建这个文件,用xcode打开,使用markdown语法进行内容编辑即可,下面是创建这个文件的命令

       touch README.md
      
    • 然后是LICENSE文件,创建并进行编辑

    • 下面是创建的命令和文件内容示例,这里只需要修改私有库名称和gitlab的链接即可

       touch LICENSE
      

      Copyright (c) 2011-2016 threeLibTestDemo2 Software Foundation (https://github.com/liquangang/threeLibTestDemo2/)

      Permission is hereby granted, free of charge, to any person obtaining a copy
      of this software and associated documentation files (the "Software"), to deal
      in the Software without restriction, including without limitation the rights
      to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
      copies of the Software, and to permit persons to whom the Software is
      furnished to do so, subject to the following conditions:

      The above copyright notice and this permission notice shall be included in
      all copies or substantial portions of the Software.

      THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
      IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
      FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
      AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
      LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
      OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
      THE SOFTWARE.

    • 接下来是最容易出问题的地方,创建和编辑podspec文件

    • 下面依次是创建podspec文件命令、标准文件演示、每个key的意义解释、特殊key的编写示例

       pod spec create testProject
      

        Pod::Spec.new do |s|
          s.name         = "threeLibTestDemo2"
          s.version      = "1.0.3"
          s.ios.deployment_target = '7.0'
          s.summary      = "私有库测试demo"
          s.description  = <<-DESC     
                               threeLibTestDemo2 是一个用于测试的demo                                     
                              DESC
          s.homepage     = "https://github.com/liquangang/threeLibTestDemo2"
          s.license      = { :type => "MIT", :file => "LICENSE" }
          s.author       = { "liquangang" => "sgliquangang@163.com" }
          s.source       = { :git => "https://github.com/liquangang/threeLibTestDemo2.git", :tag => "#{s.version}" }
          s.source_files  = "threeLibTestDemo2/**/*"
        end
    

        s.version:版本号
        s.ios.deployment_target:支持的pod最低版本
        s.summary: 简介
        s.homepage:项目主页地址
        s.license:许可证
        s.author:作者
        s.social_media_url:社交网址,这里我写的微博默认是Twitter,如果你写Twitter的话,你的podspec发布成功后会@你
        s.source:项目的地址
        s.source_files:需要包含的源文件
        s.resources: 资源文件
        s.requires_arc: 是否支持ARC
        s.dependency:依赖库,不能依赖未发布的库
        s.dependency:依赖库,如有多个可以这样写
    

        s.dependency = 'AFNetworking'
        s.license= { :type => "MIT", :file => "LICENSE" }
        s.source_files = "threeLibTestDemo2/*"
        或者s.source_files = "threeLibTestDemo2/**/*"
        s.source = { :git => "[https://github.com/liquangang/threeLibTestDemo2.git](https://github.com/liquangang/threeLibTestDemo2.git)", :tag => "#{s.version}" }
    
    7. 验证podspec文件是否正确,如果有问题要确保更改完成,否则无法继续进行
    • 输入验证命令,如果有问题,终端会显示问题,根据终端显示就可以修改大部分问题,下面是验证命令
      pod lib lint
    8. 上传所有文件到远端的库中并打tag
    • 上传所有文件到远端库
      git add .
      git commit -s -m "初始化私有库"
      git remote add origin git@git.coding.net:kensla/MyLib.git
      git push origin master
    • 打tag 并上传tag
      //打tag
      git tag 1.0.0
      //上传tag
      git push origin 1.0.0
    9. 创建本地的配置文件仓库
    • 使用下面的命令就可以在本地生成配置文件的仓库
    • wshSpecs 是你远端创建的配置文件仓库的名字,后面是配置文件仓库远端的地址
    • 注意此时不需要cd进入任何目录,从默认位置输入这个命令即可,即在点击终端快捷方式打开的状态下直接输入下面的命令即可
      pod repo add wshSpecs http://njGitrepo/wushuanghong/wshSpecs.git
    • 可以使用下面的命令查看是否成功
      open ~/.cocoapods
    10. 将配置文件push到远端专门存储配置文件的仓库中
    • 此时需要cd进入本地的code repository,否则会找不到podspec文件
    • 使用下面的命令即可,有问题可以参考报错信息去修改
    • wshSpecs 是你创建的spec repository的名字,后面是你本地创建的podspec文件,成功之后你可以在远端仓库中看到这个文件,并且远端配置文件仓库中有且只有这一个文件
      pod repo push wshSpecs caculatormaker.podspec
    11. 确认已经制作完成并使用
    • 最简单测试私有库是否配置完成的方式,使用下面的命令查找pod中是否已经有刚才配置的私有库
      pod search privateLib

    • 如何使用该私有库,这里跟公有库有一定区别,主要是podfile文件的写法区别,下面是一个示例

    • 区别在于需要添加两个source,别的跟公有库写法相同

    • 然后在使用pod update或者pod install的时候会有一个密码的验证,这个跟你之前在设备上生成的ssh的密码相同
      # Uncomment the next line to define a global platform for your project
      source 'https://github.com/CocoaPods/Specs.git'
      source 'https://git.coding.net/kensla/DDSpecs.git'
      platform :ios, '9.0'

       target 'privateLibTestDemo' do
       # Uncomment the next line if you're using Swift or would like to use dynamic frameworks
       # use_frameworks!
      
       # Pods for privateLibTestDemo
       pod 'threeLibTestDemo2'
       pod 'openLibraryDemo'
       pod 'openLibrary'
       pod 'privateLibraryTestDemo'  # 这个是私有库
       end
      

    五. 如何更新私有库

    1. 首先过程几乎跟更新公有库是一样的,只有需要push到专门存放配置文件的仓库
    2. 详细过程
    3. 创建分支并修改本地podspec文件中的版本号
    4. 编写代码并提交到这个分支
    5. 合并这个分支到主分支
    6. 验证podspec文件
    7. 打tag
      • 注意这里push tag的命令是下面这样
        git push --tags
    8. push自己的podspec到配置文件的仓库中,然后就完成了

    相关文章

      网友评论

        本文标题:iOS 创建自己的私有库

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