首页投稿(暂停使用,暂停投稿)程序员iOS 开发

创建cocoaPods私有仓库

2016-08-19  本文已影响499人  纪小衰

转载请注明出处:

http://www.jianshu.com/p/8c9280326ae8

作者:纪小衰

由于公司很多的动态链接库经常更新,经常会造成导入的framework版本不是最新,所以选择创建一个cocoaPods的私有仓库用来同步最新的包,当然对于源码的同步也是支持的。

一、创建私有的git仓库

创建私有仓库的方法有很多,由于github是开源社区,开源的代码比较多,对于私有的仓库是收费的,所以git仓库的存储选择了免费的coding.net,仓库的作用是存放自身的源码和一些用到的第三方库。

先去https://coding.net注册一个账户,注册完毕后在项目选项下新建一个项目。项目创建选项,选择私有可以让git仓库私有,创建拉取权限,如果选择公有则所有的人都可以下载同步代码,我这里使用私有。对于协议的选取,如果是开源的代码,可选MIT协议。对于gitignore的选取按需选择,设置gitignore可以选择git同步的时候忽略哪些文件类型。对于README最好勾选创建说明文件。

创建项目完毕以后,复制下项目对应的git地址。对于项目的拉取可以使用git命令,我这里使用的是smartgit可视化工具。repository->clone拉取远程项目。

二、创建podspec

使用cocoaPods的pod install命令时,其实是从本地的~/.cocoapods/repos/master(默认隐藏)中的对应库寻找对应版本的podspec文件,通过podspec中文件的地址以及信息拉取对应的库。当我们自己创建cocoapods私有库的时候则需要自己创建相对应的podspec文件,并且push到远程的cocoaPods主分支上,当其余的使用者使用cocoaPods更新cocoaPods本地分支时候便能拉取到我们新上传的podspec,然后便能通过podspec文件找到我们上传的库。

首先,我们创建一个自己的podspec文件

打开拉取到的项目,项目中应该包含README文件,开源协议LISENCE。我这边没有选中协议所以只有README文件(.gitignore应该是隐藏了)。创建podspec文件的方式有两种:

命令创建:命令行cd到项目目录下,使用pod命令'pod spec create CTFramework'创建podspec文件,创建完以后就会在工程目录下看见CTFramework.podspec文件,进入修改相关的属性

复制创建:新建文件工程名.podspec文件,然后下面的podspec文件内容复制进去进行修改,注意#开头的为注释行,source_files为指定对应目录下的资源文件,由于我这边只会同步framework而没有.h和.m文件,所以这一行我注释掉了。关于s的属性介绍可参考官方文档https://guides.cocoapods.org/syntax/podspec.html

Pod::Spec.new do |s|

s.name= "CTFramework"

s.version= "0.0.1"

s.summary= "iOS Social SDK based on EaseMob SDK"

s.description= <<-DESC

iOS Social SDK based on EaseMob SDK

DESC

s.homepage= "http://www.jianshu.com/users/49ee0c6dad03/latest_articles"

# s.license= "MIT (example)"

# s.license= { :type => "MIT", :file => "FILE_LICENSE" }

s.author= { "Jirun" => "507704800@qq.com" }

s.platform= :ios

s.source= { :git => "https://git.coding.net/JiRun/CTFramework.git", :tag => "#{s.version}" }

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

# s.exclude_files = "Classes/Exclude"

# s.public_header_files = "Classes/**/*.h"

# s.resource= "icon.png"

# s.resources = "Resources/*.png"

# s.preserve_paths = "FilesToSave", "MoreFilesToSave"

# s.framework= "SomeFramework"

s.frameworks = "UIKit", "Foundation","CTCore"

s.ios.vendored_frameworks = "CTCore.framework"

# s.library= "iconv"

# s.libraries = "iconv", "xml2"

s.requires_arc = true

# s.xcconfig = { "HEADER_SEARCH_PATHS" => "$(SDKROOT)/usr/include/libxml2" }

# s.dependency "JSONKit", "~> 1.4"

end

修改好podspec文件后,把需要上传到远程仓库的文件拖入到项目目录,由于我这里只想同步动态库,所以这里只拖入了一个动态链接库。把当前的项目通过smartgit push到远程git仓库,并且通过下面命令打上tag,注意tag要和podspec文件中的tag要一致

$ git tag 0.0.1

$ git push --tags

加入文件后的项目目录

制作好本地的podspec文件以后,我们要先本地验证下podspec文件是否可用,使用下面的命令进行验证,如果验证错误会有错误信息,请根据错误信息修改podspec文件,直到显示下面的界面表示通过了本地验证。通过验证以后重新把项目文件通过smartgit push到远程git上

pod lib lint

通过本地podspec文件验证

三、push本地的podspec文件到cocoaPods主分支上

使用下面的命令,把本地的podspec文件push到cocoaPods的远程主分支上

$ pod trunk push --allow-warnings

对于一些警告可以使用命令pod trunk push --allow-warnings去除警告,如果出现错误则需要根据错误提示去修改podspec文件,如果出现下面的界面,那么恭喜,人生中的第一个私有仓库已经构建完毕了 

podspec推送成功

由于在上传成功以后本地的cocoaPods主分支也会更新,所以这个时候我们直接能获取到私有仓库的内容了。如果在另一台pc上,我们需要使用下面的方法更新下本地的cocoaPods主分支才能用过pod search 命令搜索到

$ pod repo update

四、获取仓库中的包

故事写到这里其实已经结束了,接下来的内容为使用cocoaPods的内容。

使用$ pod search CTFramework命令查看本地的cocoaPods主分支上是否已经支持我们新建的私有仓库

出现这个界面说明我们的私有仓库已经支持cocoaPods了

进入到目标工程中创建podfile文件

$ cd /Users/ctzxh/Desktop/test

$ touch podfile

用xcode打开podfile文件,注意不要用mac自身的文本编辑(半角符号莫名变成全角)。写入下面的内容后保存退出

target "test" do

pod "CTFramework"

end

最后使用下面的命令pod安装仓库内容

$ pod install         (如果是第一次安装使用)

$ pod update      (如果是更新使用)

安装或者更新成功以后,你的目录看起来是这个样子,以后打开工程请使用test.xcworkspace

pod以后的工程目录

就到这儿吧~

注:中间遇到的坑

- ERROR | [iOS] unknown: Encountered an unknown error (Simulator iPhone 4s is not available.) during validation.

验证库的时候报错,应该是最新版的xcode中已经没有了iPhone 4s的模拟器导致,可以更新cocoapods的版本来解决问题(sudo gem install -n /usr/local/bin cocoapods)

[!] Authentication token is invalid or unverified. Either verify it with the email that was sent or register a new session.

push的时候报错,需要验证邮箱(pod trunk register 邮箱),然后去邮箱验证下重新执行pod trunk push命令即可

如果podspec已经推送到远程,但是使用pod search命令不能搜到上传的库,可以使用

rm ~/Library/Caches/CocoaPods/search_index.json删除索引,然后再使用pod search,等一会儿就能出现了

pod install 安装库失败 certificate issued for a different hostname, issuer is not trusted

打开终端(实用工具 –>终端),在终端中输入如下命令(注意url更换成你的url地址):

svn ls https://xxxxxx

然后会出现一个服务器证书的提示,根据提示输入 “p”,然后回车,问题就可以得到解决了。之后可能需要输入对应svn的账号或者密码

上一篇 下一篇

猜你喜欢

热点阅读