一、感慨

说实话,创建这个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. Squid的简单使用

    1. squid配置 # Squid normally listens to port http_port hosts_file /etc/hosts cache_access_log /var/lo ...

  2. [奇葩 bug]视图在 ipad5 上正常显示,在 iPad3上超出了边界

    一,问题分析 1.理论上 iPad 是按像素点排列的,可 iPad5为什么和 iPad3差别那么大??? 2.iPad3超出边界的视图,都有一个 leading 是superview 的 leadin ...

  3. C语言(2)

    C语言(2)---变量 基本格式: 变量类型  变量名1[,变量名2,变量名3,...变量名n]: 注意: 1.在C语言中如果申请一个变量,里面存放小数,则用float表示,且在输出时需要注意prin ...

  4. CSS_css sprite原理优缺点及使用

    CSS Sprites在国内很多人叫css精灵,是一种网页图片应用处理方式.它允许你将一个页面涉及到的所有零星图片都包含到一张大图中去,这样一来,当访问该页面时,载入的图片就不会像以前那样一幅一幅地慢 ...

  5. 关于C#引用Dll后,找不到命名空间的问题

    在引用里明确添加了一个Dll,能够看到该Dll详细信息,可就是用using找不到命名空间.并且发现刚引用时是有该命名空间,一编译就消失了. 最后发现原因如下: 原目标框架为.Net Framework ...

  6. NHibernate one-to-one

    NHibernate里面one-to-one有两种方式:主键关联和唯一外健关联 主键关联: 两个表拥有相同的主键字段,值相同的关联在一起.典型的应用是一个对象的属性太多,将常用的属性跟不常用的附加属性 ...

  7. linux下tar命令详解

     linux下tar命令详解    tar是Linux环境下最常用的备份工具之一.tar(tap archive)原意为操作磁带文件,但基于Linux的文件操作机制,同样也可适用于普通的磁盘文件.ta ...

  8. ubuntu su Authentication failure

    这个问题产生的原因是由于ubtun系统默认是没有激活root用户的,需要我们手工进行操作,在命令行界面下,或者在终端中输入如下命令: sudo passwd Password:你当前的密码 Enter ...

  9. JS分页方法

    /** maxpage 最大页数 */function gotoPage(maxpage){         var gotoPage = document.getElementById(" ...

  10. HDU 1018 大数(求N!的位数/相加)

    Big Number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total ...