给自己的开源项目添加CocoaPods支持

摘要:

CocoaPods是提供对第三方库依赖的管理工具,通过CocoaPods我们可以方便的管理每一个第三方库:添加、删除和更新,不需要我们做太多的配置工作,如此便可直观、集中和自动化地管理我们项目的第三方库。

本文不对CocoaPods做全面的介绍,想对CocoaPods做更多了解的可以阅读这篇文章:Cocoapods完整使用篇。本文主要介绍一下如何给自己的开源项目添加CocoaPods的支持。

一、创建一个配置文件(pod spec create 文件名)

要使得我们的项目支持CocoaPods,就需要告诉CocoaPods我们的项目的一些信息:源文件地址、支持的平台和版本、编译条件、依赖的系统库及第三方的库等等。这些信息是通过一个以“spec”为扩展名的文件存储起来的。因此,我们需要创建这个配置文件,编辑好项目的配置信息,然后把这个文件上传给CocoaPods。

pod spec create YQXxxxxxx

二、编辑配置文件(配置项目的信息)

  1 #
  2 #  Be sure to run `pod spec lint YQTest.podspec‘ to ensure this is a
  3 #  valid spec and to remove all comments including this before submitting the spec.
  4 #
  5 #  To learn more about Podspec attributes see http://docs.cocoapods.org/specification.html
  6 #  To see working Podspecs in the CocoaPods repo see https://github.com/CocoaPods/Specs/
  7 #
  8
  9 Pod::Spec.new do |s|
 10
 11   # ―――  Spec Metadata  ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
 12   #
 13   #  These will help people to find your library, and whilst it
 14   #  can feel like a chore to fill in it‘s definitely to your advantage. The
 15   #  summary should be tweet-length, and the description more in depth.
 16   #
 17
 18   s.name         = "YQTest"     #项目名称
 19   s.version      = "0.0.1"        #项目版本
 20   s.summary      = "A short description of YQTest."  #项目摘要
 21
 22   # This description is used to generate tags and improve search results.
 23   #   * Think: What does it do? Why did you write it? What is the focus?
 24   #   * Try to keep it short, snappy and to the point.
 25   #   * Write the description between the DESC delimiters below.
 26   #   * Finally, don‘t worry about the indent, CocoaPods strips it!
 27
 28   s.homepage     = "http://EXAMPLE/YQTest"
 29   # s.screenshots  = "www.example.com/screenshots_1.gif", "www.example.com/screenshots_2.gif"
 30
 31
 32   # ―――  Spec License  ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
 33   #
 34   #  Licensing your code is important. See http://choosealicense.com for more info.
 35   #  CocoaPods will detect a license file if there is a named LICENSE*
 36   #  Popular ones are ‘MIT‘, ‘BSD‘ and ‘Apache License, Version 2.0‘.
 37   #
 38
 39   s.license      = "MIT"
 40   # s.license      = { :type => "MIT", :file => "FILE_LICENSE" }
 41
 42
 43   # ――― Author Metadata  ――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
 44   #
 45   #  Specify the authors of the library, with email addresses. Email addresses
 46   #  of the authors are extracted from the SCM log. E.g. $ git log. CocoaPods also
 47   #  accepts just a name if you‘d rather not provide an email address.
 48   #
 49   #  Specify a social_media_url where others can refer to, for example a twitter
 50   #  profile URL.
 51   #
 52
 53   s.author             = { "yanghy" => "[email protected]" }
 54   # Or just: s.author    = "yanghy"
 55   # s.authors            = { "yanghy" => "[email protected]" }
 56   # s.social_media_url   = "http://twitter.com/yanghy"
 57
 58   # ――― Platform Specifics ――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
 59   #
 60   #  If this Pod runs only on iOS or OS X, then specify the platform and
 61   #  the deployment target. You can optionally include the target after the platform.
 62   #
 63
 64  #项目支持的平台及系统版本,若只支持ios,删除注释符号
 65   # s.platform     = :ios
 66   # s.platform     = :ios, "5.0"
 67
 68   #  When using multiple platforms
 69   # s.ios.deployment_target = "5.0"
 70   # s.osx.deployment_target = "10.7"
 71   # s.watchos.deployment_target = "2.0"
 72   # s.tvos.deployment_target = "9.0"
 73
 74
 75   # ――― Source Location ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
 76   #
 77   #  Specify the location from where the source should be retrieved.
 78   #  Supports git, hg, bzr, svn and HTTP.
 79   #
 80
 81   s.source       = { :git => "http://EXAMPLE/YQTest.git", :tag => 0.0.1" }
 82
 83
 84   # ――― Source Code ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
 85   #
 86   #  CocoaPods is smart about how it includes source code. For source files
 87   #  giving a folder will include any swift, h, m, mm, c & cpp files.
 88   #  For header files it will include any header in the folder.
 89   #  Not including the public_header_files will make all headers public.
 90   #
 91
 92   s.source_files  = "Classes", "Classes/**/*.{h,m}"  #源文件
 93   #s.exclude_files = "Classes/Exclude"
 94
 95   # s.public_header_files = "Classes/**/*.h"
 96
 97
 98   # ――― Resources ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
 99   #
100   #  A list of resources included with the Pod. These are copied into the
101   #  target bundle with a build phase script. Anything else will be cleaned.
102   #  You can preserve files from being cleaned, please don‘t preserve
103   #  non-essential files like tests, examples and documentation.
104   #
105
106   # s.resource  = "icon.png"
107   # s.resources = "Resources/*.png"
108
109   # s.preserve_paths = "FilesToSave", "MoreFilesToSave"
110
111
112   # ――― Project Linking ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
113   #
114   #  Link your library with frameworks, or libraries. Libraries do not include
115   #  the lib prefix of their name.
116   #
117
118  #依赖的系统框架
119   # s.framework  = "SomeFramework"
120   # s.frameworks = "SomeFramework", "AnotherFramework"
121
122  #第三方依赖
123   s.dependency "Masonry", "~>0.6"
124
125   # s.library   = "iconv"
126   # s.libraries = "iconv", "xml2"
127
128
129   # ――― Project Settings ――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
130   #
131   #  If your library depends on compiler flags you can set them in the xcconfig hash
132   #  where they will only apply to your library. If you depend on other Podspecs
133   #  you can include multiple dependencies to ensure it works.
134
135    # 是否支持arc
136    s.requires_arc = true
137
138   # s.xcconfig = { "HEADER_SEARCH_PATHS" => "$(SDKROOT)/usr/include/libxml2" }
139   # s.dependency "JSONKit", "~> 1.4"
140
141 end

三、配置代码仓库

因为在第二步的配置文件中给版本号配置了:0.0.1,因此我们须要给我们的项目配置一个tag,使用如下命令

1 git tag 0.0.1 #添加一个tag
2 git push --tags #推送tag到远程

四、验证我们的配置是否正确

1 pod spec lint YQXxxx.podspec

我在配置过程中出现吃错误:

1、因为项目中使用了UIKit,但是在配置中没有指定平台,因此在OSX平台上编译错误

解决办法:指定项目的平台 (# s.platform = :ios)

2、没有指定系统的版本号,在不支持arc的系统下编译失败

解决办法:指定系统版本(# s.platform = :ios, "5.0")

五、提交到CocoaPods

1 pod trunk push YQXxxx.podspec

没有配置作者的会出现:[!] You need to register a session first.错误,此时用如下命令注册一个会话后再提交

1 pod trunk register email "name" --description="macbook pro"

到此为止,你就可以使用pod search 搜索到你的项目了!

时间: 2024-10-06 03:03:56

给自己的开源项目添加CocoaPods支持的相关文章

把上传Github的代码添加Cocoapods支持

开始 这里我将从最初的开始进行介绍,包括Github上创建项目已经上传项目,到最后的支持Cocoapods. 步骤如下: 代码上传Github 创建podspec文件,并验证是否通过 在Github上创建release版本 注册CocoaPods账号 上传代码到CocoaPods 检查上传是否成功 1 代码上传Github 首先我们打开github.com,然后创建自己的项目工程: 这里注意那个MIT License,在后面添加Cocoapods支持的时候会用到(稍后介绍).然后点击创建即可.

把自己github上的代码添加cocoapods支持

一.前言 这两天被cocoapods折磨的心力憔悴.看cocoapods官网的添加支持,但是介绍的(ying)比(yu)较(tai)简(cha)单,而且有的步骤也没有写上,导致看着官方文档也没有成功,后来查阅了简书.CocoaChina等等,还是已经接近崩溃.没有一个完整的介绍.索性多个文档对比测试,最后终于成功的让自己Github上的库成功支持Cocoapods安装. 二.开始 这里我将从最初的开始进行介绍,包括Github上创建项目已经上传项目,到最后的支持Cocoapods. 步骤如下:

Intellij IDEA 普通项目添加Maven支持

Right-click on the module, select "Add framework support...", and check the "Maven" technology. (This also creates a pom.xml for you to modify.) If you mean adding source repository elements, I think you need to do that manually–not su

为项目添加CUDA支持

最近研究体绘制方面的东西,需要用到CUDA加速.从官网下载了CUDA 7.0(支持VS2013)装好后,VS2013中能直接创建CUDA项目,也可以在原有项目中添加cu文件. 进入正题,为已有项目添加CUDA支持,网上能搜到的多数都是针对VS2010的办法,然而我用的是VS2013,跟VS10版本略有不同. 先给出VS2010的方法,这个也是官方介绍的方法: 在项目上右键--生成自定义... 弹窗中选择相应版本的CUDA 之后打开项目的属性,即可看到CUDA C++了 里面的参数一般不用改,如果

创建podspec文件,为自己的项目添加pod支持

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px "Helvetica Neue"; color: #2f2f2f } span.s1 { } Cocoapods作为iOS开发的包管理器,给我们的开发带来了极大的便利,而且越来越多的第三方类库支持Pod,可以通过Pod傻瓜式的集成到自己的工程中,那么问题来了,我自己也有一系列的小工具类,怎么让它也支持pod集成,进而以后的项目开发更加的方便的使用呢? 这是第二遍操作了,第一遍学习使

iOS开发-- 创建podspec文件,为自己的项目添加pod支持

开篇扯淡 作为一个iOS开发者,一定用过CocoaPods吧,没用过?点这儿去面壁吧 Cocoapods作为iOS开发的包管理器,给我们的开发带来了极大的便利,而且越来越多的第三方类库支持Pod,可以通过Pod傻瓜式的集成到自己的工程中,那么问题来了,我自己也有一系列的小工具类,怎么让它也支持pod集成进而让其他朋友方便,的使用呢? 刚好,最近项目不算紧,自己尝试着弄了一下,在这里记录一下尝试的过程, 一来备忘, 二来共享...... 其实网上这种文章数不胜数,但是不一定都是适合自己的,比如接下

直接拿来用!最火的iOS开源项目(一~三)

结束了GitHub平台上“最受欢迎的Android开源项目”系列盘点之后,我们正式迎来了“GitHub上最受欢迎的iOS开源项目”系列盘点.今天,我们将介绍20个在GitHub上非常受开发者欢迎的iOS开源项目,你准备好了吗? 1. AFNetworking 在众多iOS开源项目中,AFNetworking可以称得上是最受开发者欢迎的库项目.AFNetworking是一个轻量级的iOS.Mac OS X网络通信类库,现在是GitHub上第三大Objective-C库.它建立在NSURLConne

Eclipse 下载 开源项目 maven依赖丢失和 Deployment Assembly 丢失

周末下载了最新的jeecg的源码来瞅瞅,但是下载后发现,pom文件中定义的依赖都丢失了. 如下图 上网搜索了一下啊,发现需要先给这个项目这个项目 disable maven nature 然后再添加上再给这个项目添加maven支持. 如下图: 然后再查看项目的依赖,如下图 但是发现不能部署tomcat,仔细一看少了 Deployment Assembly 在网上又是一通搜索,发现需要修改 project Facets 的 动态 web module 后来在网上搜索,说可以直接改配置文件,就能出现

收藏的一些github开源项目,在这里记录一下

1.在windows系统上在命令行中执行rm -fr */*.file 会报错, rimraf这个项目提供了跨平台支持rm命令,github地址: https://github.com/isaacs/rimraf 2.在windows的cmd中直接执行NODE_ENV=production设置node环境变量会报错不是内部或外部命令,可以使用better-npm-run或者cross-env这两个开源项目来跨平台支持 better-npm-run的github地址:https://github.