结合CocoaPods谈iOS私有库的三种管理方式

引言:本文主要介绍了iOS私有库的三种管理方式。在多产品线的情况下,包括业务层、自定义的控件、自定义的工具类,如日期处理类、日历、加密类等等,甚至包括App的基础框架都是可以考虑复用,这样一来有效的提高了编码的效率,让开发人员专注主业务的开发,不在为基础的框架、基础的类重复的“造轮子”。


目录

1、第三方库

2、项目中的私有库

2.1 本地管理

2.2 Git远程管理

2.3 项目组服务器管理

3、svn下的私有库管理

3.1 如何打tag进行版本控制

3.2 如何实现指定目录管理


1、第三方库

可以使用Cocoapods全权管理,配置Podfile,最后pod install。

AFNetworking、SDWebImage都可以用这种方式管理。

2、项目中的私有库

主要包括自定义的控件,自定义的工具类,如日期处理类、日历、加密类等等。

有以下几种方式进行管理:

一、本地管理

将私有库存在本地,其他项目有需要时可以选择拷贝,不过我们的目的是希望所有的私有库可以形成组件化,所以这样不利于统一管理。

另外,可以将私有库结合Cocoapods进行管理,具体的步骤如下:

1.1 新建一个SingleView项目,将私有库添加至项目中,此时项目直接Run按道理应该是可以运行成功的。

1.2 在项目的根目录(工程目录),新建podspec文件 项目名.podspec

Pod::Spec.new do |s|

s.name        = "项目名"

s.version      = "1.0.1" //版本号

s.summary      = "desc" //描述

s.homepage    = "https://coding.net/u/xxx/p/项目名/git"

s.license      = { type: 'MIT', file: 'LICENSE' }

s.author      = { "xx" => "xx@email.com" }

s.platform    = :ios, "8.0"

s.source      = { :git => "/Users/xx/项目名" }

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

s.requires_arc = true

end

PS:也可以使用命令 pod spec create A****t

前者可以自定义字段、字段值,后者则生成一个模板

1.3 最后pod lib lint,可能会报错,可以使用

pod lib lint --verbose查看具体的错误原因

pod lib lint --allow-warnings忽略警告

pod lib lint --use-libraries解决系统SDK头文件引用错误

1.4 新建工程测试

target '新建项目名称' do

# 参数对应1.2配置文件

pod '项目名', :path => '/Users/xx/项目名'

end

参考:http://www.jianshu.com/p/5b950e89e1ac


二、Git远程管理

1、做好准备工作

新建A****Y文件夹,准备以下四个文件,其中LICENSE和A****Y.podspec文件不可或缺

依赖库描述文件(.podspec)的名称需和文件夹名称保持一致

2、配置好远程仓库,这里使用的是Coding。

进入终端,cd到当前目录,执行

git clone https://git.coding.net/x****7/A****Y.git

此时创建一个空的A****Y目录

PS:第1步和第2步不分先后顺序

3、添加代码到远程仓库(Coding)

git add -A

git commit -m "add pod files"

git remote add A****Y https://git.coding.net/x****7/A****Y.git

git push A****Y master

4、cd ~/.cocoaPods/repo目录,第3步clone了一份A****Y

将spec repo文件上传

pod repo push A****Y A****Y.podspec --sources='https://git.coding.net/x****7/A****Y.git' --allow-warnings

PS:直接执行 pod repo push A****Y A****Y.podspec报错

5、pod serach A****Y

出现版本号、主页等信息说明依赖添加成功。

下面就可以像使用AFNetworking一样调用私有库了。

6、在新建的项目目录下添加Podfile文件

内容如下:

source 'https://github.com/CocoaPods/Specs.git'

source "https://git.coding.net/x****7/A****Y.git"

platform :ios, '8.0'

target 'TestUnit' do

pod 'AFNetworking', '= 3.0.0'

pod 'A****Y', '= 1.0.1'

end


三、项目组服务器管理

代码统一放在本地服务器上,使用Cornerstone进行代码的维护管理工作。

如何结合SVN和Cocoapods对项目中的私有库进行管理呢?具体的步骤如下:

感谢 clarkda 为cocoapods 提供了这个 repo-svn 的 svn 支持插件:

根据 https://github.com/clarkda/cocoapods-repo-svn 上的说明

gem install cocoapods-repo-svn 来安装 repo-svn 插件。(PS:会报权限问题,出现的Error可以忽略,改成sudo gem install cocoapods-repo-svn)

pod repo-svn add my-svn-repo http://svn-repo-url 添加你的私有 svn 项目仓库

pod repo-svn update my-svn-repo 更新项目

pod repo-svn remove my-svn-repo 删除项目

1、准备好私有库

Readme文件、Class文件夹、podspec文件

上传到服务器,指定SVN地址。

2、添加你的私有 svn 项目仓库

pod repo-svn add my-svn-repo http://svn-repo-url 

pod repo-svn update my-svn-repo 更新项目

3、在新建的项目目录下添加Podfile文件

内容如下:


3、svn下的私有库管理

3.1 如何打tag进行版本控制

需求场景:

项目经理:有新的项目要来,各项目组准备下,新项目完全可以借鉴之前的项目中的私有库进行开发,比如:一些工具类、字体、颜色、基础框架、自定义的控件等等。

项目组成员有两种方式复用之前的代码,一种是直接搬代码,明白的讲就是拷贝,这是个细活,要求对项目的结构非常了解,否则很容易出错;第二种方式

是借助工具对私有库进行统一调配,这里介绍下Cornerstone+Cocoapods的方式对私有库的管理:

基础版可参考:http://www.jianshu.com/p/cbb8931499da

本文重点介绍如何做到版本控制

1、本地项目目录创建tags目录并上传至SVN



2、在cornrstone的控制台,选到工程路径注意不是本地的,是svn服务器的,然后选择顶部tag选项


3、经过以上步骤,在SVN服务器trunk/项目名称/tags应该多个一个“1.0.1”的目录

4、调用


5、新建项目,执行pod install即可

3.2 如何实现指定目录管理

需求场景:

如果只需要其中的一个或几个私有库,怎么办?

1、podspec文件中指定subspec

指定source_files、public_header_files、dependency


2、修改podspec


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容