cocoapods开发环境搭建

1,189 阅读4分钟

cocoapods默认是采用git管理库,公共库可以通过pod直接导入。基于svn的私有库,需要自己建立svn管理代码和索引,然后通过私有repo分支的形式引入项目。

1.模块化环境搭建

cocoapods是ruby语言编写的,mac环境下默认ruby源需要翻墙,安装cocoapods之前需要更新ruby源路径。操作命令如下:

gem sources --remove https://rubygems.org/

gem sources -a https://gems.ruby-china.com/

gem sources -l

sudo gem update --system

更新完成后,即可使用命令进行安装:

sudo gem install cocoapods

PS:如果这条命令实行报错

While executing gem ... (Gem::FilePermissionError) You don't have write permissions for the /usr/bin directory.

则修改为:sudo gem install -n /usr/local/bin cocoapods

pod setup失败问题

pod的公共库托管在github项目https://github.com/CocoaPods/Specs,由于网络原因,一般是没法直接使用pod setup命令下载成功的。需要通过国内的镜像项目进行下载,目前选用的项目来自清华大学的开源软件镜像站。

cd ~/.cocoapods/repos //cocoapods公共库本地索引存放路径(PS:这个文件夹如果没有的话,可以自己手动建一个)

pod repo remove master

git clone https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git master

其他问题

参考https://www.cnblogs.com/gchlcc/p/6068801.html

cocoapods添加svn支持

cocoapods是基于git管理的,如果想要支持svn,首先要安装cocoapods-repo-svn插件: gem install cocoapods-repo-svn

至此,准备工作完成。

验证环境

使用pod search afnetworking命令验证是否成功,成功会显示出相关库信息;失败则根据设备信息进行解决。

1、[!] Unable to find a pod with name, author, summary, or description matching afnetworking

解决方法:执行 rm ~/Library/Caches/CocoaPods/search_index.json

2、fatal: not a git repository (or any of the parent directories): .git

解决方法:执行 git init

3.目前安装完成后最新的pod版本应该在1.8.x之后,直接使用pod search,会采用cocoapods新的CDN索引机制进行搜索,可能会有一些库搜索不到。而且进入项目工程后pod install会失败。

解决方法: 在项目的podfile文件中,第一行加入:source 'github.com/CocoaPods/S…' 强制使用老的master分支install。 在第一pod install成功后,将这行在podfile里注释掉即可。

2.创建私有库的svn

cocoapods依赖管理分为两个部分,一部分为版本和索引管理svn来管理所有库的路径和信息;一部分为各个模块的实际代码存放的svn。

1.在svn上创建文件夹加以区分,在svn上创建一个TD_repos的文件夹来存放索引,创建一个TD_libs的文件夹来存放模块代码。

2.将repos的路径添加cocoapods的本地索引中。因为我们使用的svn,需要使用svn插件的命令:pod repo-svn add xxxx_repos svn: //xxx.xx.xxx.xxx/xx/TD_repos。添加完成后,可以通过pod repo list命令查看是否添加成功。

现在可以建立测试库,来进行验证了。在TD_libs下新建一个库 (文件夹)TD_test。cocoapods的库一般包含 源码、开源协议、readme和一个podspec文件。

我们依次创建LICENSE 文件,README.md文件,Sources文件夹,并拷贝源码到Sources文件下。然后使用 pod spec create TD_test 创建私有库索引文件。根据svn的路径情况修改podspec文件(podspec字段解析)。

s.name  = "taindy_test"

s.version = "0.0.1" //库版本号

s.summary = "xxxx" //概要

s.description = <←DESC 库的详细描述 DESC

s.license = "MIT (xxxx)" //遵守的开源协议

s.author = { "xxxx" => "xxxxx@qq.com" } //作者信息

s.platform = :ios //使用平台

s.source = { :svn => "svn://xxx.xx.xxx.xxx/xx/TD_libs/TD_test", :tag => "#{s.version}" }//最重要的源码配置,source指向spec在的目录

s.source_files = "Sources", "Sources/**/*.{h,m}" //源码文件的目录

如果需要进行版本控制,需要在svn上进行打标。在TD_test目录下,创建tags文件夹,在tags文件夹下创建0.0.1(与配置文件中s.version的数值对应)文件夹,把之前的LICENSE文件,README.md文件,Sources文件夹以及podspec文件拷贝到0.0.1文件夹内,即可完成打标。

打标完成后,将文件上传至SVN服务器。通过pod spec lint TD_test.podspec 命令检测podspec文件,如果提示passed validation,则表示创建私有库创建成功,否则请按照错误提示修改。

私有库创建成功后,即可通过pod repo-svn push TD_repos TD_test.podspec 命令上传私有库索引到索引管理分支。

上传完成后,通过pod search TD_test 搜索私有库,如果能显示私有库信息就表示私有库上传完成。

3.测试私有库

xcode创建新的测试工程,TD_testProject。命令行进入TD_testProject.xcodeproj的同级目录下,使用pod init 创建文件Podfile(podfile字段解析)。

在podfile的 target 'TD_testProject' do 下加入引用库的代码:

plugin 'cocoapods-repo-svn', :sources => [
 'svn://xxx.xxx.xxx.xxx/TD_repos' # 添加 svn 服务器中私有库 spec 的 repo
]

 pod 'TD_test', '~> 0.0.1'

保存文件,在命令行执行 pod install。cocoapods会将私有库引入项目,并且在主工程内可以使用了。

!!!pod install之后,请通过cocoapods生成的TD_testProject.xcworkspace来打开项目