CocoaPods上传公用项目

来源:互联网 发布:javascript是什么知乎 编辑:程序博客网 时间:2024/05/21 07:04

CocoaPods上传公用项目

存在的问题

项目写到一定阶段时,在新建项目另起炉灶的时候,大量的使用了老项目的公用部分,暂且不论copy/paste对我们自身成长的局限吧,单单从下面的场景可以看到单纯的copy/paste是多么的致命:


场景:新的项目使用到老项目的公用代码,但是在开发过程中,这部分的公用代码可能并不完善或者性能并不高效的代码,虽然你会很积极用心的改好了新项目中的这部分代码,往往回去再改老项目的时候会非常非常的痛苦,哪怕这块公用代码只有新老两个项目使用。

CocoaPods介绍

CocoaPods可以说是解决这个问题比较好的方式了,作为iOS非常好用的项目依赖管理工具,它能方便的管理和更新项目中使用的第三方库。关于它的一些介绍,iOS的大大们都已经开好了大道,推荐看看唐巧大大的CocoaPods做iOS程序的依赖管理

CocoaPods上传项目步骤

接下来简单高效的说明CocoaPods上传公用项目的步骤:

1、创建Pod项目工程文件;
2、在github或者其他git服务网站对该项目建立git仓库;
3、配置HDBaseProject.podspec文件;
4、将代码放在Pods-Development Pods/HDBaseProject/Pod/Classes/目录下;
5、在项目的master分支加上版本号;
6、在CocoaPods上注册刚刚的Pod项目;
7、验证Pod项目是否符合CocoaPods的规范;
8、将HDBaseProject.podspeccocoaPods中;
9、新项目使用;
10、一些问题;

接下来详细的说明CocoaPods上传公用项目的步骤:

1、创建Pod项目工程文件:
$ pod lib create HDBaseProject

image

2、在github对该项目建立git仓库:

开源代码上传GitHub

$ cd projectPath$ git add .$ git commit -s -m "Initial Commit of Library"$ git remote add origin https://github.com/erduoniba/  HDBaseProject.git           $ git push origin master
3、配置HDBaseProject.podspec文件:
Pod::Spec.new do |s|    s.name             = "HDBaseProject"    s.version          = "1.0.0"    s.summary          = "快速搭建项目"    s.description      = "新建项目中常用的基础类,项目有一定量的时候,都是代码的复制和粘贴,但是在后台的粘贴中或许有好的代码更正,这个时候我们往往没有时间去维护以前的老代码,不经意间会出现代码不同步的问题"    s.homepage         = "https://github.com/erduoniba/HDBaseProject"    s.license          = 'MIT'    s.author           = { "Harry" => "328418417@qq.com" }    s.source           = { :git => "https://github.com/erduoniba/HDBaseProject.git", :tag => "1.0.0" }    s.platform     = :ios, '7.0'    s.requires_arc = true    s.source_files = 'Pod/Classes/**/*'    s.resource_bundles = {    'HDBaseProject' => ['Pod/Assets/*.png']    }    s.dependency 'AFNetworking'  #依赖关系,该项目所依赖的其他库,如果有多个需要填写多个s.dependencyend
4、将代码放在Pods-Development Pods/HDBaseProject/Pod/Classes/目录下:

image

5、在项目的master分支加上版本号:

这个地方的tag值需要和HDBaseProject.podspec中的v.version保存一致

$ cd projectPath$ git tag -m "first release" 1.0.0$ git push --tags     #推送tag到远端仓库
6、在CocoaPods上注册刚刚的Pod项目:
$ cd HDBaseProject.podspec文件所在的路径$ pod trunk register 13049862397@163.com 'HDBaseProject' --description='新建项目中常用的基础类,项目有一定量的时候,都是代码的复制和粘贴,但是在后台的粘贴中或许有好的代码更正,这个时候我们往往没有时间去维护以前的老代码,不经意间会出现代码不同步的问题'

注册之后收到来自info@cocoapods.org的一封验证邮箱,点击链接确认即可

7、验证Pod项目是否符合CocoaPods的规范:
$ cd HDBaseProject.podspec文件所在的路径$ pod lib lint

当显示HDBaseProject passed validation表示验证通过

8、将HDBaseProject.podspecSpec Repo中:
$ cd HDBaseProject.podspec文件所在的路径$ pod trunk push HDBaseProject.podspec

成功之后使用

$ pod search HDBaseProject

可以搜索到该项目,这表明在Cocoapods上传项目已经成功

9、新项目使用:

会使用CocoaPods的同学都懂,在项目的Podfile中添加

pod 'HDBaseProject'

执行:

$ cd newProjectPath$ pod update
10、一些问题:
  • 10.1 HDBaseProject本身依赖其他pod工程,比如依赖AFNetworking,需要对Pods/Podfile进行修改:

    source 'https://github.com/CocoaPods/Specs.git'use_frameworks!target 'HDBaseProject_Example', :exclusive => true do    pod 'HDBaseProject', :path => "../"    pod 'AFNetworking' endtarget 'HDBaseProject_Tests', :exclusive => true do    pod 'HDBaseProject', :path => "../"    pod 'AFNetworking'end

然后终端执行:

$ cd Pods/Podfile所在的路径$ pod update

image

  • 10.2 对.spec文件的理解:
    在Specs仓库中包含了所有Pod项目,随便点击一个Pod项目进去可以发现里面只有一个json文件:(里面内容其实就是开发者上传的.spec文件转json后的文件)
    同样的,我们在安装或者更新CocoaPods的时候,实际上就是在更新Specs仓库,本地存放地址是:.cocoapods/repos/master/Specs

  • 10.3 项目更新:
    项目编辑完成之后,将这个工程push到远端仓库,并打上新的tag->1.0.1HDBaseProject.spec中的v.version保存一致

    $ cd HDBaseProject.podspec文件所在的路径$ pod lib lint

    验证通过,再次提交到Spec Repo

最后再次使用pod lib lint验证编辑好的podsepc文件,没有自身的WARNING或者ERROR之后,就可以再次提交到Spec Repo中了,命令跟之前是一样的

$ cd HDBaseProject.podspec文件所在的路径$ pod trunk push HDBaseProject.podspec
  • 10.4 项目删除:(未试验��)

    $ cd .cocoapods/repos/master/Specs$ rm -Rf HDBaseProject$ git add --all .$ git ci -m "remove HDBaseProject"$ git push origin master
  • 10.4 项目邀请他人共同维护:(未试验��)

    $ pod repo add HDBaseProject https://github.com/erduoniba/HDBaseProject.git

CocoaPods相关资料

CocoaPods官网

wtlucky’s Blog 使用Cocoapods创建私有podspec

yohunl cocoapods应用第二部分-私有库相关

项目下载

0 0