27
2017
09

组件化开发之利用SVN搭建私有SpecRepo

随着公司业务发展,app数量增加,粘贴复制重复造轮子的开发方式已经不能满足多个app快速迭代的需求了,于是就组件化开发就应运而生了,关于什么是组件化开发以及组件化开发的好处,这里不再赘述,需要了解的同学移步这里传送门。本文只讲述组件化开发关键技术—使用cocoapods管理组件化开发。

一、由于公司内部实现的一些私有组件,不对外公开,所以考虑创建私有podspec,下图就是使用私有库带给我们的好处:
这里写图片描述

这里写图片描述

至此,我们明白了查找到第三方库背后的原理。但是,具体如何进行搜索的呢?先解释一个概念,什么是Spec Repo?它是所有的Pods的一个索引,也就是一个容器(集合),所有公开的Pods都在这个里面。实际上就是一个Git仓库remote端,当你使用了Cocoapods,这个仓库会被clone到本地的~/.cocoapods/repos目录下,进入到这个文件下可以看到master文件夹,就是官方的Spec Repo了。当你pod search的时候就在master这个文件下面查找的。

二、如何制作出属于自己的私有库?由于我们公司用的是SVN ,网上的资料介绍的绝大多数是基于git的(需要基于git创建私有库,请移步这里传送门,经过查找资料发现:

# Specify the location from where the source should be retrieved.
# Supports git, hg, bzr, svn and HTTP.

结果是明确的,支持SVN制作私有库,那么接下来就是不断的踩坑,终于成功了,记录下来备忘,如果能够帮到别人更好。

重点开始了

步骤一 首先在SVN创建私有库目录,check out,编写私有库代码,上传至SVN。

例如这里我创建了名为ForPrivateLibraries的目录,用来存放所有私有库,然后在ForPrivateLibraries目录下,创建了名为WDTest的私有库,文件目录如下

这里写图片描述

步骤二创建podspec文件并修改,在终端中cd到WDTest的目录下,使用pod命令创建一个podspec文件。

具体终端操作如下:

WDiMac:~ apple$ cd /Users/apple/Desktop/MySVN/ForPrivateLibraries/WDTest 
WDiMac:WDTest apple$ pod spec create WDTest

Specification created at WDTest.podspec
WDiMac:WDTest apple$ 

podspec文件创建之后需要对其进行修改,

Pod::Spec.new do |s|

  s.name         = "WDTest"

  s.version      = "0.0.1"

  s.summary      = "测试使用SVN创建私有库"

  s.description  = <<-DESC
                    测试使用SVN创建私有库,看是否能成功
                   DESC

  s.homepage     = "http://EXAMPLE/WDTest"

  s.license      = "MIT"

  s.author             = { "" => "" }

  s.platform     = :ios, "8.0"


  s.source       = { :svn => "" }

  s.source_files  = "Classes", "Classes/**/*.{h,m}"

  s.exclude_files = "Classes/Exclude"

  s.requires_arc = true

end

注意点一、上面是我修改之后的文件,主要是对于 s.source 进行修改,这里的路径就是podspec文件所在的路径,可以直接在Cornerstone上 copy url(见下图)。

注意点二、podspec文件的source默认是有一个tags存在的,现在先删掉,后面会叙述。s.source_files也非常重要,如果搞错可能会导致pod install之后没有源文件。

注意点三、 s.author = { “” => “” } 如果你之前注册过trunk,这里面会帮你自动填写,如果没有我会在另外一篇文章《发布自己的pods到CocoaPods trunk》中介绍怎么注册trunk。

podspec文件修改完毕之后上传至SVN。

这里写图片描述

步骤三,测试使用。我创建了一个WDCocoaPodsTest的工程用于测试,编写对应的Podfile文件

platform :ios, '8.0'
use_frameworks!

target 'WDCocoaPodsTest' do

  pod 'AFNetworking'

  pod'WDTest', :svn =>""

end

这里面svn =>”“对应的路径就是步骤二中的 s.source

编写完成之后进行pod install 查看 ,可以看到安装成功,使用也没有问题。
这里写图片描述

这里写图片描述

步骤四 添加tag功能

设置tag其实还是很简单的,首先需要在WDTest目录下新建一个tags文件夹,我采用的是本地创建好,然后上传到SVN。然后选中WDTest文件夹右击 Tag ,填写tag和选择tags的位置,之后创建tag 0.0.1。注意是不是在本地选中WDTest文件,而是在SVN远程仓库目录中。
这里写图片描述
这里写图片描述

修改podfile文件描述如下:

platform :ios, '8.0'
use_frameworks!

target 'WDCocoaPodsTest' do

  pod 'AFNetworking'

  pod'WDTest', :svn =>"",:tag =>”0.0.1end

这里面svn =>”“同样是步骤二中的 s.source
修改之后重新安装同样可以使用

步骤五 更新新版本–tag管理,

修改源代码,同时修改WDTest.podspec文件中 s.version = “0.0.1”为 s.version = “1.0.1”

提交代码至SVN,然后在SVN中添加新tag 1.0.1

修改podfile文件描述如下:

platform :ios, ‘8.0’
use_frameworks!

target ‘WDCocoaPodsTest’ do

pod ‘AFNetworking’

pod’WDTest’, :svn =>”“,:tag =>”1.0.1”

end

这里面svn =>”“同样是步骤二中的 s.source

重新pod install 测试

这里写图片描述

最终的SVN目录截图如下

这里写图片描述

Pods里面只有WDTest,证明我们确实安装的是1.0.1

这里写图片描述

至此,整个过程已经完成了,有需要的小伙伴可以试试

上一篇:Android基于google-play-services-vision:8.1.0实现动态人脸检测 下一篇:android使用opensl es进行简单的音频播放