一、感慨

说实话,创建这个CocoaPods私有库,我愣是搞了两个星期,创建的过程中,自己的感情波动是这样的:激情四射---->有点困惑----->极度困惑----->有点失望----->非常失望----->想放弃了----->放弃了----->不甘心,一个星期后又倒腾起来了----->还是失望----->向朋友求助----->问题解决,迟来的兴奋---->成功了,急切的想给大家分享成果。可以说,这个过程真是一波三折,遇到的各种坑让我百感交集。还好,我最终坚持到底,成功了,在此感谢我的好朋友@Kakarotto-卡卡罗特,下面我就给大家分享一下教程。

二、说说遇到的坑:

1、本地的私有仓库验证通过,但是远程仓库上的私有仓库验证不通过,路经不对,报Error[iOS] file patterns: The `source_files` pattern did not match any错误

解决办法:重新打开xxx.podspec文件编辑一下,确定共享文件路径没有错误,然后再上传到github上验证。

source_files文件格式有几种设置方法:

s.source_files  = 'Classes/*.{h,m}'
s.source_files = 'Classes/publicClass.{h,m}'
s.source_files = 'Classes'
s.source_files = 'Classes/**/*.{h,m}'

2、上传xxx.podspec到github和给xxx.podspec打tag顺序搞反了,验证不通过

解决办法:必须先将本地文件夹所有的文件上传到github上,然后再给xxx.podspec打上tag,打tag方式也有两种方法:

命令行方式:

git tag -m "注释" 1.0.
git push --tags

直接在github上点击release进入创建tag:

3、xxx.podsepc、LICENSE、Demo、pulcicLib它们几个没有放在同一层级上,验证不通过

解决办法:将他们放到同一个文件夹的同一个层级上,例如

4、最后所有的验证都通过了也上传成功了,结果使用pod search仍然搜索不到,是因为search_index.json文件重复了,需要先删除再搜索

解决办法(此处是在成功安装CocoaPods,但不能pod search搜素类库的情况下探讨问题):

4.1 执行pod setup

    • 其实在你安装CocoaPods执行pod install时,系统会默认操作pod setup,然而由于中国强大的墙可能会pod setup不成功。这时就需要手动执行pod setup指令,如下:
    • 终端输入:pod setup
    • 会出现Setting up CocoaPods master repo ,稍等几十秒,最底下会输出setup completed。说明执行pod setup成功。
    • 如果pod search操作还是搜索失败,如下:
    • 终端输入:pod search AFNetworking
    • 输出:Unable to find a pod  with name,author,summary,or descriptionmastching 'AFNetworking' 这时就需要继续下面的步骤了。

4.2 删除~/Library/Caches/CocoaPods目录下的search_index.json文件

    • pod setup成功后,依然不能pod search,是因为之前你执行pod search生成了search_index.json,此时需要删掉。
    • 终端输入:rm ~/Library/Caches/CocoaPods/search_index.json
    • 删除成功后,再执行pod search。

4.3 执行pod search

    • 终端输入:pod search sfneteorking (不区分大小写)
    • 输出:Create search index for spec repo 'master'..Deno!,稍等片刻······就会出现所有带有afnetworking字段的类库。

5、验证私有仓库时如果出现gcc编译错误:[-Werror, -Wnon-modular-include-in-framework-module].造成xcode build failed

解决办法是加参数:--use-libraries

$ pod lib lint xxx.podspec --use-libraries
$ pod spec lint xxx.podspec --use-libraries
$ pod trunk push --use-libraries

提示:最后提一个小策略,如果验证时报错了,可以在验证时加上后缀--verbose来查看错误的具体位置

三、简述大致流程

  • 在github上创建项目,复制项目的链接路径,例如:https://github.com/xiayuanquan/XYQCocoaPods.git;
  • 使用命令行或者sourceTree将项目克隆到本地新建的一个文件夹中;
  • cd进入本地该文件夹,将自己之前的工程文件(demo)以及共享文件(共享库Lib)拖入其中,并创建私有仓库,例如:pod spec create cocoaPodsName;
  • 编辑私有仓库信息(使用文本编辑器或者sublime等)
  • 编辑结束保存,并验证本地的私有仓库是否有效(—allow-warnings可以消除警告)例如:pod lib lint cocoaPodsName.podspec  —allow-warnings;
  • 验证有效后,然后再将本地该文件夹中所有的文件push到github上
  • 使用git tag(此方法操作后再push上传一次)或者直接在github上点击release进入后创建release并给私有仓库打上tag
  • 注册trunk,例如:pod trunk register 邮箱 ‘用户名’ —descripttion=‘描述’,注意:邮箱为github上的登录邮箱、用户名为github上的用户名
  • 接收发送到邮箱的链接,点击进入后注册成功
  • 查看注册的个人信息,例如:pod trunk me
  • 验证上传到github上的私有仓库是否有效(—allow-warnings可以消除警告,例如:pod spec lint cocoaPodsName.podspec  —allow-warnings
  • 将私有仓库推送到CocoaPods上,例如:pod trunk push cocoaPodsName.podspec
  • 使用pod search  cocoaPodsName搜索即可

四、详细步骤流程如下:

(1)在github上创建项目,复制项目的链接路径,例如:https://github.com/xiayuanquan/XYQCocoaPods.git;

(2)使用命令行或者sourceTree将项目克隆到本地新建的一个文件夹中;

(3)cd进入本地该文件夹,将自己之前的工程文件(demo)以及共享文件(共享库Lib)拖入其中,并创建私有仓库,例如:pod spec create cocoaPodsName;

注意:下面说的是尽量都保持一样,其实,此处私有库名称必须和共享文件夹名称一样,而和github项目名一不一样,要求不那么严格

(4)编辑私有仓库信息(使用文本编辑器或者sublime等,注意:引号不能搞错了,是英文格式的"",不是中文格式“”)

(5)编辑结束保存,并验证本地的私有仓库是否有效(—allow-warnings可以消除警告)例如:pod lib lint cocoaPodsName.podspec  —allow-warnings;

(6)验证有效后,然后再将本地该文件夹中所有的文件push到github上

(7)使用git tag(此方法操作后再push上传一次)或者直接在github上点击release进入后创建release并给私有仓库打上tag

(8)注册trunk,例如:pod trunk register 邮箱 ‘用户名’ —descripttion=‘描述’,注意:邮箱为github上的登录邮箱、用户名为github上的用户名

(9)接收发送到邮箱的链接,点击进入后注册成功

(10)查看注册的个人信息,例如:pod trunk me

(11)验证上传到github上的私有仓库是否有效(—allow-warnings可以消除警告,例如:pod spec lint cocoaPodsName.podspec  —allow-warnings

(12)将私有仓库推送到CocoaPods上,此处时间会久一点,请耐心等待,例如:pod trunk push cocoaPodsName.podspec

(13)使用pod search  cocoaPodsName搜索即可

注意:

1、本人原创,转载需注明出处,希望对大家有帮助:参考链接:http://www.cnblogs.com/zhanggui/p/6003481.html

2、重点:本篇采用纯手工方式制作私有库,步骤很繁琐,极力推荐使用模板制作,参考链接:https://www.cnblogs.com/jukaiit/p/12392264.html

iOS:最详细的创建CocoaPods私有库教程的更多相关文章

  1. 从零开始创建CocoaPods私有库

    为什么要创建CocoaPods私有库? 避免重复的造轮子 节约时间,方便管理自己的代码 精益求精 创建CocoaPods私有库 1.创建私有仓库工程 执行命令pod lib create SmartB ...

  2. iOS之创建CocoaPods公有库教程

    简介 在开发过程中,经常会使用到第三框架,我们通过一个pod install命令,很方便的就将第三方框架加到我们自己的项目中. 如果我们也想将自己写的组件或库开源出去,让别人也可以通过pod inst ...

  3. 创建Cocoapods私有库

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

  4. iOS 创建本地私有库 保存功能代码

    创建本地私有库 >>> cd /Users/cxx/Desktop/Mange_JJH/Lib >>> pod lib create TZTools >> ...

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

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

  6. 【原+转】创建CocoaPods私有podspec

    在我的上一篇文章<iOS 手把手教你发布代码到CocoaPods>中着重介绍如何将自己的代码索引添加到公开的CocoaPods中,当你需要主动地向大众开源你的代码时需要那么做.但在现实中我 ...

  7. 创建Pods私有库

    Pods私有库创建步骤 创建私有 Spec Repo 创建Pod项目工程文件 创建podspec文件 本地测试podsspec文件 向Spec Repo提交podspec Pod库使用 更新维护pos ...

  8. macOS sierra 10.12 Cocoapods 私有库

    使用Cocoapods创建私有podspec 见文章:http://www.cocoachina.com/ios/20150228/11206.html 或http://blog.wtlucky.co ...

  9. iOS组件化开发一远端私有库建立(二)

    公共库业务,基础层划分! 一.构建私有云,本文推荐为码云 1.构建名称为LuckTimeSpec,选择私有建立: 2.Copy地址的https 链接: 二.打开终端 输入: cd /Users/zha ...

随机推荐

  1. HDU5331 : Simple Problem

    因为是二分图,所以最大独立集$=$总点数$-$最大匹配. 因为是树,所以具有贪心性质,设$f_i$表示$i$是否与其孩子匹配,$a_i$表示$i$的孩子里$f$为$0$的个数,则$f_i=[a_i&g ...

  2. Java 生产者模式 消费者模式

    // The standard idiom for calling the wait synchronized(sharedObject) { while(condition){ sharedObje ...

  3. Mac OS X中MacPorts安装和使用

      安装 官网pkg安装   搜索索引中的软件port search name 安装新软件sudo port install name 卸载软件sudo port uninstall name 查看有 ...

  4. 【Java】RuleSource约束常用方法整理

    1-常用约束规则RuleSource的设置方法   例如: addRules(new Rules(ProgramFeeItem.class){ protected void initRules() { ...

  5. iOS 开发小结

    一,经历 1> 在编写以前有过的类似的新功能时,如果以前的开发人员没有写明明确的注释和开发需求,一定要仔细阅读所有代码,每一句代码都有它存在的意义. 2> 例如,只以为是[self.ful ...

  6. asp.net 操作Excel大全

    asp.net 操作Excel大全 转:http://www.cnblogs.com/zhangchenliang/archive/2011/07/21/2112430.html 我们在做excel资 ...

  7. Connect模块解析

    Connect模块背景 Node.js的愿望是成为一个能构建高速,可伸缩的网络应用的平台,它本身具有基于事件,异步,非阻塞,回调等特性,这在前几篇专栏中有过描述. 正是基于这样的一些特性,Node.j ...

  8. hdu1241 dfs

    链接改天再补 杭电又崩了... 题意:求“@”组成了多少个联通区域,每个点的8个方向都认为是相连的 思路:对每一个点进行搜索 当Map == @ && vis == 0 时 可进入搜索 ...

  9. JAVA递归算法

    1.什么是递归算法 递归算法就是直接或间接调用自己的算法 2.问题1:一列数的规则如下: 1.1.2.3.5.8.13.21.34 ,求第30位数是多少?使用递归实现 public class Fib ...

  10. [转载]窗口之间的主从关系与Z-Order

    窗口之间的主从关系与Z-Order 原文地址:http://www.cnblogs.com/dhatbj/p/3288152.html说明:这是本人2008年写的一篇旧文,从未公开发表过.其中除了一小 ...