一、感慨

说实话,创建这个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. ccc 播放动画

    cc.Class({ extends: cc.Component, properties: { anim:cc.Animation, }, // use this for initialization ...

  2. POJ 3061 (二分+前缀和or尺取法)

    题目链接: http://poj.org/problem?id=3061 题目大意:找到最短的序列长度,使得序列元素和大于S. 解题思路: 两种思路. 一种是二分+前缀和.复杂度O(nlogn).有点 ...

  3. iOS中为网站添加图标到主屏幕

    1 <link rel="apple-touch-icon-precomposed" href="icon.png"/> 2 <link re ...

  4. ACM 懒省事的小明

    懒省事的小明 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述       小明很想吃果子,正好果园果子熟了.在果园里,小明已经将所有的果子打了下来,而且按果子的不同种 ...

  5. Google测试分享-测试经理

    首先大家可以思考下,google的测试经理角色必须具备什么样的能力.据不完全统计,google的测试经理,超过一半之前都做过TE的角色(大家可以想想为啥):对于与被测产品相关的任何使用问题,测试经理都 ...

  6. HDU 4002 Find the maximum(欧拉函数)

    题目链接 猜了一个结论,题面跟欧拉函数有关系. import java.util.*; import java.math.*; import java.text.*; import java.io.* ...

  7. Hightcharts动态创建series

    第一种方法: 申明options时动态设置series,然后再创建chart对象 代码如下: <html> <head> <title>Highcharts Exa ...

  8. Ajax分页js代码

    var pageIndex = 0; var pageSize = 10; $(function () { $("#btnSearch").click(function () { ...

  9. java实现MD5加密

    mport java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class Creat ...

  10. JAVA递归算法

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