CocoaPods发布框架到远程公有库

  • 1.编写代码~上传远程仓库

    git init
    git add .
    git commit -m '提交到本地分支' //关联远程仓库
    git remote add origin 远程仓库url
    //提交代码到远程仓库
    git push origin master //tag
    git tag //查看版本标签
    git tag -a 1.0.0 -m '1.0.0版本完成' //打完tag 还是处于本地,需要 提交远程代码库
    git push --tags //本地所有tags都提交
  • 2.创建podSpec

        pod spec create 文件名称
    //修改podspec文件内容,如下 假设项目名称Test01
    s.name = "Test01"
    s.version = "1.0.0"
    s.summary = "Test01 is a test lib" s.description = <<-DESC
    "这是一个长的描述字数要比s.summary长,Test01 is a test lib"
    DESC s.homepage = "https://github.com/LouKit/Test01" s.license = "Apache License, Version 2.0"
    s.author = { "LK" => "loukit@qq.com" }
    s.source = { :git => "https://github.com/LouKit/Test01.git", :tag => "#{s.version}" }
    s.source_files = "Classes", "Classes/**/*.{h,m}"
  • 3.podSpec验证

    pod spec lint
  • 4.提交到官方索引库

    //邮箱 密码 填个正确即可,后续需要通过邮箱验证
    pod trunk register loukit@qq.com '随便写' --verbose
  • 5.通过trunk推送podspec文件

    pod trunk push
  • 6.完成

    测试
    pod search Test01
    如果搜索不到,干掉缓存json文件(我电脑路径:/Users/loukit/Library/Caches/CocoaPods/search_index.json)继续搜索即可

CocoaPods本地私有库使用

  • 1.创建本地库
  • 2.创建podSpec文件 //pod spec create 文件名称

    修改podspec文件内容同‘CocoaPods发布框架到远程公有库’,其余:
    # 本地库去掉地址即可
    s.source = { :git => "", :tag => "#{s.version}" }
  • 3.验证

    pod lib lint    
    
    出现⚠警告
    localhost:TestLog LouKit$ pod lib lint -> TestLog (0.0.1)
    - WARN | homepage: The homepage has not been updated from default
    - WARN | url: There was a problem validating the URL http://EXAMPLE/TestLog.
    - WARN | license: Unable to find a license file [!] TestLog did not pass validation, due to 3 warnings (but you can use `--allow-warnings` to ignore them).
    [!] The validator for Swift projects uses Swift 3.0 by default, if you are using a different version of swift you can use a `.swift-version` file to set the version for your Pod. For example to use Swift 2.3, run:
    `echo "2.3" > .swift-version`.
    You can use the `--no-clean` option to inspect any issue.
    警告可接受,无视!
  • 4.创建测试工程,并创建Podfile文件,进行安装本地库

    platform :ios, '9.0'
    
    target 'Example' do
    use_frameworks!
    #描述好本地相对路径
    pod 'Test01',:path => '../Lib/Test01' end
  • 5.安装

    pod install

CocoaPods远程私有库使用

  • 1.创建一个专门用于存放spec文件的远程库

  • 2.将远程库地址加入repo

    pod repo add 名字XX 地址
  • 3.创建本地模板库

    pod lib create spec文件名称  //记得修改podspec文件
  • 4.创建远程库 用于存放 步骤3 存放的库工程

    git add .
    git commit -m 'msg'
    #查看是否有关联远程库,没有需要设置下
    git remote
    //没有设置关联
    git remote add origin 地址
    如:git remote add origin https://git.coding.net/LouKit/xxx.git
    git push origin master
  • 5.验证spec文件

    本地验证 pod lib lint
    远程提交 必须远程验证 pod spec lint (刚刚步骤4提交时没有tag,所以这个步远程验证肯定过不了,需要提交tag) 提交tag:
    git tag 0.1.0
    git push --tags
    //验证
    pod spec lint
  • 6.将spec 推送到步骤1的那个私有库

    pod repo push 名字XX spec文件名称.podspec //这里名字XX 必须对应步骤2 那个名字xx
  • 7.修改宿主工程podfile

    source 'https://git.coding.net/LouKit/xxx.git'
    source 'https://github.com/CocoaPods/Specs.git'
    platform :ios, '9.0' target 'Example' do
    use_frameworks! pod 'spec文件名称'
    end
  • 8.安装

    pod install

其他

问题 1. 维护阶段(扩充代码,版本号升级)

需重新提交代码 修改spec描述文件,大概步骤如下:

1. 重新提交代码
git add .
git commit -m 'msg'
git push origin master 2. 打tag 同时改spec描述文件
git tag 0.2.0
git push --tags 3. 提交pec文件 4. 更新spec文件到索引库
pod repo push 名字XX spec文件名称.podspec

问题 2. 依赖关系解决(比如制作库需要依赖AFN)

//直接spec文件描述即可
s.dependency 'AFNetworking', '~> 3.1.0'

问题 3. 依赖关系子库解决 
(如一个库里有三个子库,现在只需用到其中一个,不要全部用到 ,即把一个库分成几个小库)

# 代表分离子库
#s.source_files = 'xx/Classes/**/*' 这种写法是匹配所有的 s.subspec 'Category' do |c|
c.source_files = 'xx/Classes/Category/**/*'
end s.subspec 'Network' do |n|
n.source_files = 'xx/Classes/Network/**/*'
n.dependency 'AFNetworking', '~> 3.1.0'
end s.subspec 'Tool' do |t|
t.source_files = 'xx/Classes/Tool/**/*'
end 然后使用这个子库过程podefile 写法
target 'Example' do use_frameworks!
pod 'xx/Category'
pod 'xx/Network'
end

CocoaPods - 发布自己的模块(公有库、私有库)的更多相关文章

  1. 制作CocoaPods公有库和私有库

    认识公有库和私有库 公有库:开源自己封装的库供别人使用,且往cocoaPods的官方Repo仓库(即CocoaPods Master Repo)中新增自己库的索引,该库索引是以*.podspec.js ...

  2. 创建Cocoapods私有库

    本文以自己在公司做的一个手势密码私有库GesturePasswordKit为例说明. 1.在gitlab(或者github,我这里使用的例子是在gitlab上)上创建git仓库 (确保授权正确,避免后 ...

  3. Dubbo入门到精通学习笔记(四):持续集成管理平台之Maven私有库和本地库的安装与配置

    文章目录 介绍 Maven私有库和本地库的安装与配置 Nexus安装 Nexus 配置(登录后) 介绍 如果构建的Maven项目本地仓库没有对应的依赖包,那么就会去Nexus私服去下载, 那么如果Ne ...

  4. Mac终端的Cocoapods创建自己的私有库和公有库

    一,前言 为什么要用Cocopods 通常在开发的过程中,大多时候,我们会处理一类相同的操作,比如对于字符串String的邮箱验证,是否为空,手机号验证,或者一些UIView的动画操作,我们为了避免写 ...

  5. Cocoapods 创建自己的公开库、私有库

    如何创建自己的共有库 1.注册Trunk trunk需要CocoaPods 0.33版本以上,用pod --version 命令查看版本 CocoaPods版本 如果版本低,需要升级: sudo ge ...

  6. 使用CocoaPods创建自己的私有库-iOS组件化第一步

    目前iOS组件化常用的解决方案是Pod+路由+持续集成,通常架构设计完成后第一步就是将原来工程里的模块按照架构图分解为一个个独立的pod工程(组件),今天我们就来看看如何创建一个Pod私有库. 新建: ...

  7. 工具第二天 cocoaPods 私有库的创建

    之前介绍了cocoaPods的安装与使用,今天简单谈一下 自己的私有库运用cocoaPods依赖. cd到需要做库的工程目录下 创建一个podspec文件 创建:pod spec create 名称 ...

  8. 利用cocoapods创建基于git的私有库

    上一篇文章记录了我利用cocoapods创建基于SVN的私有库的全部过程,今天我再记录一下基于git创建的过程. 整体先说明一下创建一个私有的podspec包括如下那么几个步骤: 创建并设置一个私有的 ...

  9. iOS代码组件化--利用cocoaPods创建私有库

    如果项目模块多,模块间逻辑复杂,我们发现多个人同时维护一个代码仓库需要十分小心,一不小心,造成冲突,解决起来很烦,相信很多人都遇到手工删除合并的冲突的文件的经历. 如果利用组件化思想,每个人维护自己的 ...

随机推荐

  1. Beacon Designer 8.14 下载及破解

    先安装 Beacon Designer 8.14 下载地址 http://1.download.minixiazai.com/pc/Beacon.Designer.8_po.ziphttp://www ...

  2. 004-guava 集合-新增集合类型-MultiSet, MultiMap, BiMap , Table, ClassToInstanceMap, RangeSe, RangeMap等

    一.概述 Guava引入了很多JDK没有的.但明显有用的新集合类型.这些新类型是为了和JDK集合框架共存,而没有往JDK集合抽象中硬塞其他概念.作为一般规则,Guava集合非常精准地遵循了JDK接口契 ...

  3. 【427】Graph 实现 以及 DFS & BFS

    目录: Graph 实现 二维数组实现 Linked List 实现 DFS:深度优先搜索 stack 实现 recursion 实现 BFS:广度优先搜索(queue) 其他应用 非连通图遍历 - ...

  4. 使用wkhtmltopdf将多个html批量转成pdf

    相关工具:wkhtmltopdf 场景:比如笔者有 ognl中文文档,全部是html,现在想把它转成pdf,放到ipad阅读,文件如下: 下载好wkhtmltox(本地安装目录 D:\develop\ ...

  5. C# WebClient 无法设置超时时间的解决办法

    http://www.lenashane.com/article/20150624-1021.html

  6. [ kvm ] 学习笔记 7:KVM 虚拟机创建的几种方式

    通过对 qemu-kvm.libvirt 的学习,总结三种创建虚拟机的方式: (1)通过 qemu-kvm 创建 (2)通过 virt-install 创建 (3)通过 virt-manager 创建 ...

  7. 2019年Java面试题基础系列228道(5)

    21.存在两个类,B 继承 A,C 继承 B,我们能将 B 转换为C 么?如 C = (C) B: 这属于强制类型转换,如果被转换的B实例不是C类型,会有异常 比如你的ABC分别对应动物,猫,黑猫. ...

  8. 微信小程序 之页面跳转

    wxml: <view><button bindtap="abc" >跳转</button></view> js: abc: (e) ...

  9. SQL优化————Insert

    1.如果是非生产环境,可以先将索引和约束删掉,等数据插入完之后,再建立索引和约束. 2.如果一次性插入数据较大,可以使用游标,每次小批量的插入数据. 3.如果数据表太大,可以构建历史表,老数据通常不会 ...

  10. cuda-convnet在Ubuntu12.04+CUDA5.5下的配置

    deep learning近年来非常之火,尤其是在IMAGENET上的识别效果更是惊呆了小伙伴,其所用的Hinton的学生编写的cuda-convet代码早已公开,但是一直没有时间去仔细研究,最近趁着 ...