结合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


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容