引言:本文主要介绍了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