因为公司的项目比较多,多个项目之间有不少公共的东西,各类姿式百度以后决定使用码云私有库+cocoaPods的方式来管理公共部分的代码(公司的代码是不能公开的,因此用的是码云)。html
本文讲的是从头开始的流程:ios
一、在码云上建立一个本身的私有仓库,本人是使用的sourceTree在本地进行的版本管理git
参考:使用码云建立属于你的免费私有git仓库ssh
二、在终端,cd到你的项目文件目录中,建立podspec文件:ui
pod spec create xxxxx
文件名最好与你的库名字一致,库名字最好不要与pods上其余库名字重复url
建立成功后,项目文件目录下会多一个xxxxx.podspec的文件,这个至关于pods仓库的配置文件,配置内容具体以下:spa
# Pod::Spec.new do |s| # s.name = "PodTestLibrary" #名称 # s.version = "0.1.0" #版本号 # s.summary = "Just Testing." #简短介绍,下面是详细介绍 # s.description = <<-DESC # Testing Private Podspec. # DESC # s.homepage = "https://git.oschina.net/wuhongxing/PrivateRepo.git" #主页,这里要填写能够访问到的地址,否则验证不经过 # s.screenshots = "www.example.com/screenshots_1", "www.example.com/screenshots_2" #截图 # s.license = 'MIT' #开源协议 # s.author = { "wtlucky" => "wtlucky@foxmail.com" } #做者信息 # s.source = { :git => "https://git.oschina.net/wuhongxing/PrivateRepo.git", :tag => "0.1.0" } #项目地址,这里不支持ssh的地址,验证不经过,只支持HTTP和HTTPS,最好使用HTTPS # s.social_media_url = 'https://twitter.com/<twitter_username>' #多媒体介绍地址 # s.platform = :ios, '8.0' #支持的平台及版本 # s.requires_arc = true #是否使用ARC,若是指定具体文件,则具体的问题使用ARC # s.source_files = 'Pod/Classes/**/*.{h,m}' #代码源文件地址,**/*表示Classes目录及其子目录下全部文件,若是有多个目录下则用逗号分开,若是须要在项目中分组显示,这里也要作相应的设置
# s.resource_bundles = { # 'PodTestLibrary' => ['Pod/Assets/*.png'] # } #资源文件地址 # s.public_header_files = 'Pod/Classes/**/*.h' #公开头文件地址 # s.frameworks = 'UIKit' #所需的framework,多个用逗号隔开 # s.dependency 'AFNetworking', '~> 2.3' #依赖关系,该项目所依赖的其余库,若是有多个须要填写多个s.dependency # end
而后将代码提交。.net
这个配置文件的配置内容很重要,配置的对错,会决定你的代码可否成功的推送到pods翻译
三、为你的code打上tag版本号code
git tag '0.0.1' git push --tags
版本号本身肯定,与podspec配置文件内的版本号相匹配
四、注册trunk
pod trunk register xxxx@xxxx.com 'xxxx' --description='xxxx' --verbose
xxxx@xxxx.com一个可用的邮箱,注册成功以后会收到一份邮件须要点开
'xxxx'用户名
--description='xxxx'描述
--verbose若是出现错误,显示更多信息
查看本身的信息:
pod trunk me
添加其余维护者
pod trunk add-owner xxxxxxx xxxxx@xxxx.com
xxxxxxx 库的名字
xxxxx@xxxx.com 其余人的trunk邮箱
五、提交到CocoaPods trunk
pod trunk push --allow-warnings
该操做会对本地的代码及podspec配置文件进行检查,容许警告WARN但不容许报错ERROR
也能够本身手动检查
pod lib lint --allow-warnings
若是是在项目文件目录下pod lib lint后面不须要跟xxxxx.podspec文件名,--allow-warnings是容许警告
六、上面的步骤成功以后
pod search 你的库名
就能搜索到了
六、接下来是更新代码,而后推送到pods的流程。
个人代码库里只是一些零散的文件,因为推送到pods的代码不能报错,因此我这里是新建了一个空项目,而后把公共依赖的文件放到一个文件夹内Classes(名字随意),拖到项目中,在提交的时候先编译一下,确保没有报错。
这样作的同时podspec里
s.source_files的配置也要改成指定的文件目录:项目名/Classes/**/*.{h,m}
本地文件改动后,提交到git
七、而后重复步骤3,为你的代码打上tag,并推送tag(tag不能重复)
八、而后步骤5推送到trunk,这一步检查的时候很容易失败,报出的错误能够翻译过来针对性的找一下问题,基本意思都很明确
之后在每一个项目中之须要在Podfile文件中增长本身的库,而后
pod install
每次有更新 pod update 你的库名
便可
能够参考:发布本身的pods到CocoaPods trunk
http://www.javashuo.com/article/p-wefwgsii-et.html
在引用Masonry时,须要在podspec配置文件中增长
s.user_target_xcconfig = { 'CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES' => 'YES' }