码迷,mamicode.com
首页 > 其他好文 > 详细

创建podSpec,使用pod管理第三方库

时间:2016-01-13 21:51:13      阅读:1068      评论:0      收藏:0      [点我收藏+]

标签:

 提要:

  podfile文件会先读取.podspec文件,根据.podspec文件的指向来下载第三方库到项目中。

  本文先通过一、二、三项,这三个步骤讲解了如何建立一个.podspec文件在本地.cocoaPod库,第三方库在远程机器的例子。

  后文中的第四项,讲解了.podspec文件在本地项目中,第三方库在远程机器的设置方法;最后讲了.podspec文件在本地项目中,第三方库也在本地项目中的设置方法。

 

正文讲解:

一、创建需要pod管理的第三方库

(1) 本地创建第三方库起名为lvPodLibrary,用命令创建如下:

sheron_lv@MacLv:~/codeLv/github$ pod lib create lvPodLibrary //输入命令

根据提示回答四个问题,1.是否需要一个例子工程;2.选择一个测试框架;3.是否基于View测试;4.类的前缀。

加入我们要用Pod管理的类,这里直接起名为lvPodLibrary.h和lvPodLibrary.m。

加入后目录结构如下所示:

技术分享

 

(2)在github上创建New repository,即远端lvPodLibrary库。拿到地址,比如我的是https://github.com/SheronLv/lvPodLibrary.git。把上面创建的本地库push到远端:

sheron_lv@MacLv:~/codeLv/github/lvPodLibrary$ git add .
sheron_lv@MacLv:~/codeLv/github/lvPodLibrary$ git commit -m "Initial Commit of Library"
On branch master
nothing to commit, working directory clean
sheron_lv@MacLv:~/codeLv/github/lvPodLibrary$ git remote add origin https://github.com/SheronLv/lvPodLibrary.git //添加远端仓库
sheron_lv@MacLv:~/codeLv/github/lvPodLibrary$ git push origin master //提交到远端仓库

因为podspec文件中获取第三方库lvPodLibrary这个Git版本控制的项目还需要tag号,所以我们要打上一个tag

sheron_lv@MacLv:~/codeLv/github/lvPodLibrary$ git tag -m "first release" "0.1.0"
sheron_lv@MacLv:~/codeLv/github/lvPodLibrary$ git push --tags //推送tag到远端仓库

也就是说,我现在推送的lvPodLibrary第三方库是0.1.0版本的。

(3)编辑lvPodLibrary.podspec文件,或者如果这个库是通过其他方式创建的没有这个文件的话,创建lvPodLibrary.podspec文件

sheron_lv@MacLv:~/codeLv/github/lvPodLibrary$ pod spec create lvPodLibrary https://github.com/SheronLv/lvPodLibrary.git

内容如下:

Pod::Spec.new do |s|
  s.name         = "lvPodLibrary" #名称
  s.version      = "0.1.0"
  s.summary      = "Just Testing"   #简短介绍,下面是详细介绍
  s.description  = <<-DESC
            Testing Testing Testing DESC s.homepage = "https://github.com/SheronLv/lvPodLibrary" s.license = ‘MIT‘ s.author = { "Sheron lv" => "email@address.com" } s.platform = :ios, "7.0" s.source = { :git => "https://github.com/SheronLv/lvPodLibrary.git", :tag => s.version } s.source_files = "lvPodLibrary", "lvPodLibrary/**/*.{h,m}" end

检验.podspec文件是否可用可用

sheron_lv@MacLv:~/codeLv/github/lvPodLibrary$ pod lib lint

 -> lvPodLibrary (0.1.0)

lvPodLibrary passed validation. // 此提示信息表示可用

然后把所有文件push到远端。

二、创建podSpec仓库

(1)在github上创建New repository,作为podSpec的远程仓库,如下图,我在github上创建了一个名为lvPodSpec的仓库。

技术分享

(3)将远程podSpec仓库添加到本地仓库目录下,即~/.cocoapods/repos目录下。

sheron_lv@MacLv:~$ pod repo add lvPodSpec https://github.com/SheronLv/lvPodSpec.git//输入命令

Cloning spec repo `lvPodSpec` from `https://github.com/SheronLv/lvPodSpec.git` //执行过程、结果

此时本地~/.cocoapods/repos目录下已经有了名为lvPodSpec的仓库。通过pod search命令可以查到这个库的信息:

sheron_lv@MacLv:~/Desktop/lvDemo$ pod search lvPodLibrary

//查到信息如下

-> lvPodLibrary (0.1.0)

   Just Testing

   pod ‘lvPodLibrary‘, ‘~> 0.1.0‘

   - Homepage: https://github.com/SheronLv/lvPodLibrary

   - Source:   https://github.com/SheronLv/lvPodLibrary.git

   - Versions: 0.1.0 [lvPodSpec repo]

把之前的lvPodLibrary.podspec文件拷贝到本地的lvPodSpec项目中,目录层级如下:

技术分享

然后把所有的内容push到远程lvPodSpec下。(其实可以删掉lvPodLibrary项目下的lvPodLibrary.podspec文件,没有指向它。但现在可以先留着,后面练习直接指向第三方库的.podspec文件可以使用)

(注意:每次更新版本tag,把上级目录的名字也更新,或者建立新的文件夹比如0.1.1、0.1.2,否则无法找到这个版本的.podspec)

三、在新的项目中使用pod管理第三方库

新建一个demo项目,目录层级如下

技术分享

编写这个项目的Podfile如下:

 source ‘https://github.com/SheronLv/lvPodSpec.git‘   //注:如果不添加source句有可能找不到,就会出错

platform:ios,"7.0"

inhibit_all_warnings!
target "lvDemo" do
        pod lvPodLibrary,0.1.0
end

运行pod install,项目中就出现了要用的lvPodLibrary项目,此时目录层级如下:

技术分享

总结:经过多次实践,以上的三大步骤,其实是以下指向关系:

1)需要使用第三方库的项目中的Podfile指向本地的仓库中的.podspec文件

    例如 Podfile中关键代码

      pod ‘lvPodLibrary‘,‘0.1.5‘

2)本地的.podspec文件指向远程仓库的第三方库的地址
  例如 本地仓库中~/.cocoapods/repos/项目lvPodSpec的lvPodLibrary.podspec文件
     s.name         ="lvPodLibrary" 
   s.version      = “0.1.5"
s.source       = { :git => "https://github.com/SheronLv/lvPodLibrary.git", :tag => s.version }
s.source_files  = "lvPodLibrary"
(3)远程仓库lvPodLibrary.git

    关键是:

    push时要打tag;

    存放第三方库lvPodLibrary的目录结构与.podspec文件中指定的s.source_files一致。

用图来表示一下:

技术分享

我们知道,运行pod install时,运行的是本地.cocoapods下的.podspec,远程对应的.podspec和在你要管理的第三库里创建的.podspec都是不起作用的。

四、 PS:  podfile不同写法

(1)

pod lvPodLibrary  , :git =>https://github.com/SheronLv/lvPodLibrary.git, :tag => 0.1.2

这样,pod会去找远程git地址上,tag是0.1.2的那次提交的代码里的lvPodLibrary.podspec文件,根据lvPodLibrary.podspec文件下载对应的第三方库。

(2)将上文中创建的lvPodLibrary.podspec文件复制到需要依赖该库代码的项目目录下,如本项目demo/spec/lvPodLibrary.podspec,然后修改Podfile中对该库的依赖为:

pod lvPodLibrary  , :podspec => ./spec/lvPodLibrary.podspec

执行pod install也会拉到对应的第三方库的代码。

(3)如果第三方库的代码lvPodLibrary不想放到远程,可以通过使用path的方式将代码添加到pod中,如下所示: 

#Podfile中这样写
pod lvPodLibrary  , :path => ./LocalPod/lvPodLibrary.podspec

#.podspec文件中这样写
s.source       = { :tag => s.version}
s.source_files  = "lvPodLibrary"

注意:这样写时,将文件lvPodLibrary.podspec和第三方库代码lvPodLibrary并列放在本项目的同一文件夹下,比如本项目是LocalPod文件夹,否则找不到第三方库。

文件目录如下:

技术分享

 

创建podSpec,使用pod管理第三方库

标签:

原文地址:http://www.cnblogs.com/Xylophone/p/5128193.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!