最近在为公司的项目做组件化,考虑到CocoaPods的方便性,便打算将组件上传到CocoaPods,网上相关的文章资源也挺多,但是在实际动手操作的时候还是存在问题,并且网上也没有搜到这个问题的解决方案。这个问题就是如何在自己的CocoaPods项目中引用其他CocoaPods库,接下来,我会将搭建过程给大家列举出来,方便大家借鉴。
第一步 安装CocoaPods
这一步网上教程挺多的,自行搜索。
第二步 创建GitHub仓库
建议创建空白仓库,避免与CocoaPods创建出来的文件存在文件冲突,创建仓库后不需要做额外操作。
第三步 创建CocoaPods项目
使用以下终端命令行创建一个CocoaPods项目
pod lib create 项目名
该命令将会要求你输入一些指令来完成创建,输入完成将会在当前文件夹下创建一个CocoaPods项目
第三步 提交GitHub仓库
CocoaPods创建出来的文件夹包含了.git文件,所以我们只需要在此文件夹下执行git remote就可以关联我们的GitHub仓库
cd ./上一步创建出来的CocoaPods项目文件夹
// 关联GitHub仓库
git remote add origin 你的仓库地址(.git结尾的)
// 提交到远程仓库,依次执行以下命令
git add .
git commit -m "提交描述"
git push -u origin master
等待上传完成就可以进行下一步操作
第四步 编写podspec文件
打开Example目录下的 .xcworkspace工程,在这里编写podspec文件
Pod::Spec.new do |s|
s.name = 'kevintest'
s.version = '0.1.0'
s.summary = '这里是你的项目描述'
s.description = '这里是你的项目描述,需要长一点'
s.homepage = '这里是你的GitHub项目主页'
s.license = { :type => 'MIT', :file => 'LICENSE' }
s.author = { 'kevin' => '673729631@qq.com' }
s.source = { :git => 'https://github.com/kevin930119/kevintest.git(这里填写你的GitHub项目地址)', :tag => s.version.to_s }
s.ios.deployment_target = '8.0'
# 这里是最终需要编译出来的代码文件目录,一般不需要改动,记得把代码文件拉到这个文件夹就行
s.source_files = 'kevintest/Classes/**/*'
# 这里存放的是资源文件
# s.resource_bundles = {
# 'kevintest' => ['kevintest/Assets/*.png']
# }
# 这里推荐这么写,将该目录下的.h文件暴露出来
s.public_header_files = 'kevintest/Classes/**/*.h'
# 以下,如果不需要可以不写
# 这里是此三方库需要依赖的系统动态库
s.frameworks = 'UIKit', 'MapKit'
# 这里是此三方库需要依赖的系统静态库
s.library = 'resolv', 'iconv', 'stdc++', 'c++', 'sqlite3'
# 此三方库需要依赖的其他CocoaPods仓库,可以依赖多个
s.dependency 'AFNetworking', '~> 2.3'
s.dependency 'Masonry'
end
第五步 安装pod依赖库
这一步其他网上资源都没有说,如果不执行这一步的话,即使你podspec文件依赖了其他pod仓库,在编写自己的代码的时候会出现引用不了的情况,并且有一点需要注意的,如果这里不修改的话,即使安装了pod依赖库,一样会出现引用不了的情况。
命令行CD进Example文件夹
cd ./Example
可以看到该文件夹目录结构是这样的
划重点了,坑就在这里了,需要修改一下Podfile
执行pod命令进行依赖库安装
pod install
// 或
pod update
/* 两个命令的区别在于
pod install会直接安装Podfile里面的三方库,而pod update会首先执行更新pod索引文件的操作,一般情况,直接使用pod install会快很多
*/
第六步 编写自己的代码文件
接下来就是编写自己的代码了,这里需要注意的是,新建的代码文件必须存放在Classes文件夹下,记得Targets选择自己的项目哦,因为在之前的podspec文件中我们已经指定了该文件夹为源代码文件夹,如果不想存放在这里,可以在podspec里面修改
然后就可以在我们自己的CocoaPods项目中引用其他第三方仓库了(▽)
第七步 检查项目是否编译通过
// CD到项目主目录
cd ..
// 执行命令
pod lib lint
查看问题并解决,再次执行,如果没问题就可以执行下一步
第八步 上传到GitHub并打tag
git add .
git commit -m "提交描述"
git push
// 然后开始打tag,tag就是在podspec文件里面的版本号
git tag '0.1.0'
// 推送tag到远程仓库
git push --tags
第九步 上传到CocoaPods
注册trunk
pod trunk register 673729631@qq.com 'kevin' --verbose
然后去邮箱里面点击验证地址,成功后就可以继续下一步了
上传podspec文件
pod trunk push 项目名.podspec --allow-warnings
成功后就可以使用自己的CocoaPods仓库了。