由于公司的项目比较多,多个项目之间有很多公共的东西,各种姿势百度之后决定使用码云私有库+cocoaPods的方式来管理公共部分的代码(公司的代码是不能公开的,所以用的是码云)。
本文讲的是从头开始的流程:
1、在码云上创建一个自己的私有仓库,本人是使用的sourceTree在本地进行的版本管理
2、在终端,cd到你的项目文件目录中,创建podspec文件:
pod spec create xxxxx
文件名最好与你的库名字一致,库名字最好不要与pods上其他库名字重复
创建成功后,项目文件目录下会多一个xxxxx.podspec的文件,这个相当于pods仓库的配置文件,配置内容具体如下:
# 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
然后将代码提交。
这个配置文件的配置内容很重要,配置的对错,会决定你的代码能否成功的推送到pods
3、为你的code打上tag版本号
git tag '0.0.1' git push --tags
版本号自己确定,与podspec配置文件内的版本号相匹配
4、注册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邮箱
5、提交到CocoaPods trunk
pod trunk push --allow-warnings
该操作会对本地的代码及podspec配置文件进行检查,允许警告WARN但不允许报错ERROR
也可以自己手动检查
pod lib lint --allow-warnings
如果是在项目文件目录下pod lib lint后面不需要跟xxxxx.podspec文件名,--allow-warnings是允许警告
6、上面的步骤成功之后
pod search 你的库名
就能搜索到了
6、接下来是更新代码,然后推送到pods的流程。
我的代码库里只是一些零散的文件,由于推送到pods的代码不能报错,所以我这里是新建了一个空项目,然后把公共依赖的文件放到一个文件夹内Classes(名字随意),拖到项目中,在提交的时候先编译一下,确保没有报错。
这样做的同时podspec里
s.source_files的配置也要改为指定的文件目录:项目名/Classes/**/*.{h,m}
本地文件改动后,提交到git
7、然后重复步骤3,为你的代码打上tag,并推送tag(tag不能重复)
8、然后步骤5推送到trunk,这一步检查的时候很容易失败,报出的错误可以翻译过来针对性的找一下问题,基本意思都很明确
以后在每个项目中之需要在Podfile文件中增加自己的库,然后
pod install
每次有更新 pod update 你的库名
即可
可以参考:发布自己的pods到CocoaPods trunk
https://www.cnblogs.com/richard-youth/p/4704413.html
在引用Masonry时,需要在podspec配置文件中增加
s.user_target_xcconfig = { 'CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES' => 'YES' }