私有库制作手册


第一种构建私有库方法

一、创建项目
791499-20161223105325245-1157266931.png
二、克隆到本地
791499-20161223105453167-507650403.png
791499-20161223105533636-576132103.png
三、将自己之前的工程文件(demo)以及共享文件(共享库Lib)拖入其中
四、创建私有仓库
  pod spec create cocoaPodsName

  注意:
        此处私有库名称必须和共享文件夹名称一样,而和github项目名一不一样,要求不那么严格
791499-20161223105716964-1211886217.png
791499-20161223105743526-1818720177.png
五、编辑私有仓库信息(nano编辑)
791499-20161223105821557-1687036411.png
六、验证本地的私有仓库是否有效
pod lib lint cocoaPodsName.podspec  —allow-warnings
791499-20161223105915807-283899940.png
七、push到github
791499-20161223110305823-1118604672.png
八、给私有仓库打上tag
791499-20161223110420432-2110612782.png
791499-20161223110543995-1009159833.png
791499-20161223110608589-316911985.png
九、注册trunk
pod trunk register 邮箱 ‘用户名’ —descripttion=‘描述’
十、接收发送到邮箱的链接,点击进入后注册成功
791499-20161223110724542-1934033210.png
十一、查看注册的个人信息
pod trunk me
791499-20161223110746604-1224144306.png
十二、验证上传到github上的私有仓库是否有效
pod spec lint cocoaPodsName.podspec  —allow-warnings
十三、将私有仓库推送到CocoaPods上
pod trunk push cocoaPodsName.podspec
791499-20161223110838979-2049955987.png
十四、使用pod search cocoaPodsName搜索即可
pod search  cocoaPodsName
十五、遇到的坑

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

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

* 执行pod setup

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

* 删除~/Library/Caches/CocoaPods目录下的search_index.json文件
    a)pod setup成功后,依然不能pod search,是因为之前你执行pod search生成了search_index.json,此时需要删掉
    b)终端输入:rm ~/Library/Caches/CocoaPods/search_index.json
    c)删除成功后,再执行pod search

* 执行pod search
    a)终端输入:pod search sfneteorking (不区分大小写)
    b)输出:Create search index for spec repo 'master'..Deno!,稍等片刻······就会出现所有带有afnetworking字段的类库
十六、总结
1、在github上创建项目,复制项目的链接路径,例如:https://github.com/xiayuanquan/XYQCocoaPods.git;
2、使用命令行或者sourceTree将项目克隆到本地新建的一个文件夹中;
3、cd进入本地该文件夹,将自己之前的工程文件(demo)以及共享文件(共享库Lib)拖入其中,并创建私有仓库,例如:pod spec create cocoaPodsName;
4、编辑私有仓库信息(使用nano)
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搜索即可


第二种构建私有库方法

一、创建私有的spec文件仓库
1、首先在github或gitlab上创建一个空项目,这里给个名字是TPSpecRepo
2、在终端执行如下命令
    allen:.cocoapods allentang$ cd ~/.cocoapods/
    allen:.cocoapods allentang$ ls
    repos
    allen:.cocoapods allentang$ cd repos/
    allen:repos allentang$ ls
    TPSpec1 master
    //这个命令的作用:(1).创建本地仓库.(2)同第1步创建的github项目关联起来
    //pod repo add 私有库名字 github/gitlab项目地址
    allen:repos allentang$ pod repo add TPSpecRepo https://github.com/TPQuietBro/TPSpecRepo.git
    Cloning spec repo `TPSpecRepo` from `https://github.com/TPQuietBro/TPSpecRepo.git`
    allen:repos allentang$ ls
    TPSpec1     TPSpecRepo  master
3、此时我们需要的私有仓库TPSpecRepo已经创建好了,如下图
2789967-78cc793ceb115b83.png
二、创建我们需要pod的项目
1、另起一个路径,这里我回到了桌面,命令如下
      allen:repos allentang$ cd ~/Desktop/
      //这个命令的作用是创建一个pod项目,它会自动给你生成spec文件,后面需要更改这个文件
      allen:Desktop allentang$ pod lib create TPHomeModule

2、执行完这个命令之后会有如下几个选项,按照需求来填就好了
2789967-0654475e9766cf06.png
3、选项填完之后回车,会自动创建一个项目,名字就叫TPHomeModule

4、在TPHomeModule里面有两个文件夹
    Assets:存放图片资源等等
    Classes:存放源码,默认会有一个ReplaceMe.m文件
  我们只需要把要上传的代码放入Classes文件即可,如果需要查看更改后demo效果,在Example中pod update即可更新修改的文件.

5、在github或gitlab上创建新的pod项目,这里我创建的地址是
    https://github.com/TestModuleForPrivate/TPHomeModule.git

6、进入TPHomeModule项目,修改spec文件,这里可以用vi或者文件编辑器(不推荐,因为可能会改变"的格式,造成lint不通过),我这里简单粗暴直接拖到xcode进行更改

    Pod::Spec.new do |s|
    s.name             = 'TPHomeModule'
    //版本是必须要填的
    s.version          = '0.1.0'
    //描述是必填的
    s.summary          = 'This is TPHomeModule'
    s.description      = <<-DESC
    TODO: Add long description of the pod here.
    DESC
    s.homepage         = 'https://github.com/TestModuleForPrivate/TPHomeModule'
    s.license          = { :type => 'MIT', :file => 'LICENSE' }
    s.author           = { 'allen' => 'xxx@163.com' }
    //pod来源
    s.source           = { :git => 'https://github.com/TestModuleForPrivate/TPHomeModule.git', :tag => s.version.to_s }
    //支持的系统版本
    s.ios.deployment_target = '8.0'
    //需要pod下来的文件,就是你想给别人pod的文件
    s.source_files = 'TPHomeModule/Classes/**/*'
    end

7、执行pod lib lint --allow-warnings --verbose

  -> TPHomeModule (0.1.0)
  TPHomeModule passed validation.

  如此便是lint成功了.

8、继续执行如下命令

    git remote add origin https://github.com/TestModuleForPrivate/TPHomeModule.git//这里是你需要pod的项目地址,不是私有库的地址哦!!!!!
    git add .
    git commit -m "init spec"
    git push origin master
    //注意:如果你创建项目的时候生成了README或者license文件,那么这里你push的时候可能会push不了,这里的话可以用
    git push origin master -f 强制提交,会覆盖之前的文件

9、为仓库打tag(很重要),必须是第8步完成之后,执行这一步,而且这个tag必须和spec文件中的版本一致

    git tag -m "version_1" 0.1.0
    git push --tags

10、最后一步,将你的spec文件push到私有库进行管理,可以用pod repo 命令查看你的私有库

    //执行如下命令
    // pod repo push 最开始建立的私有库名称 pod项目中的spec文件,--allow-warnings --verbose 忽略警告,打印详细日志
    allen:TPHomeModule allentang$ pod repo push TPSpecRepo TPHomeModule.podspec --allow-warnings
    Validating spec --allow-warnings --verbose
    -> TPHomeModule (0.1.0)
    Updating the `TPSpecRepo' repo
    Your configuration specifies to merge with the ref 'refs/heads/master'
    from the remote, but no such ref was fetched.
    Adding the spec to the `TPSpecRepo' repo
    - [Add] TPHomeModule (0.1.0)
    Pushing the `TPSpecRepo' repo

    到此私有库就建立完成了.
三、测试私有pod,新建一个项目,然后进入到项目文件中,pod init之后在podfile如下书写
(1)写source
//下面两个source是必须写的,通过下面两个url,pod的时候才能找到对应的仓库地址
(很重要**********************************)
source 'https://github.com/CocoaPods/Specs.git'
//下面这个地址是管理spec文件的私有库地址,不是pod lib create那个项目的地址
source 'https://github.com/TPQuietBro/TPSpecRepo.git'
platform :ios, '8.0'
target 'Demo' do
//注意,单引号也可以
pod "TPHomeModule"
end
(2) 不写source
platform :ios, '8.0'
target 'Demo' do
pod 'TPHomeModule',:git=>'https://github.com/TestModuleForPrivate/TPHomeModule.git'
end

然后pod install 即可在pods中生成你自己的项目文件.