CocoaPods创建私有库的坑
暑假实习开始第一件事就是学习组件开发,从pod命令生成项目,到更新framework至cocoapod遇到了大大小小的坑,以下文字文笔不好,纯当总结。
自己学习组件化的步骤:
1.Cocoapod创建私有库,并生成生成项目
2.上传组件至Cocoapods
3.更新组件至Cocoapods
4.组件封装成Framework
5.上传Framework至Cocoapods
1.Cocoapods创建私有库,并生成生成项目
(1).在coding创建一个项目ZLSNavc
(2).在终端中创建一个本地私有库,在终端中输入: pod repo add DPNavc https://git.coding.net/dream_boy/DPNavc.git (coding中创建的项目地址)
创建私有库
此时在~/.cocoapods/repos/就能看见自己私有库
私有库
(3).使用pod生成项目
cd到一个空目录,并执行pod lib create DPNavcLib
生成项目
2.上传组件至Cocoapod
在上传这一步我遇到了第一个大坑
(1).根据网上步骤,将创建项目中~/DPNavcLib/DPNavcLib/Classes中的ReplaceMe.m替换成自己的组件文件
替换文件
替换后的文件
(2).打开example中的项目,打开DPNavcLib中的DPNavcLib.podspec
DPNavcLib.podspec
(3).进入DPNavcLib目录,对DPNavcLib.podspec,执行 pod lib lint DPNavcLib.podspec --use-libraries进行本地验证
本地验证
(4).将本地代码与远程项目关联,并上传代码
上传代码
(5).对远程项目打上tag要与DPNavcLib.podspec中的s.version相同
s.version
远程仓库打上tag
(6).向私有库DPNavc上传代码,进入DPNavcLib目录,执行pod repo push DPNavc DPNavcLib.podspec --use-libraries
image.png
此时私有库DPNavc已经有了自己的组件
image.png
(7).在自己项目编写podfile如图
Podfile(8).执行pod install遇到了问题:
问题解决方法:
进入/Users/dapao/.cocoapods/repos/DPNavc/DPNavcLib,删除Assets,Classes
image.png
进入ZLSNavcLib,在里面新建一个空目录,并将Classes中的组件代码复制至新目录中,删除Assets和Classes
image.png
打开DPNavcLib.podspec,修改参数s.source_files和s.version(注意,每次修改完项目,都需写上新的version,否则会有不可预知的错误)
修改DPNavcLib.podspec再重新执行(3)~(6)步,此时遇到经典git冲突,解决冲突具体看网上git冲突解决,在此不赘言。
在执行第(6)前对repo进行升级,执行 pod repo update DPNavc
升级repo
最后完成截图
完成
(9).重新再项目里执行pod install
安装成功
此时项目会出现自己的组件
image.png
3.更新组件至CocoaPods
其实这一步就是2中解决错误的步骤,将修改完成的代码,按流程上传至git,并更新本地私有库,再执行pod repo push DPNavc DPNavcLib.podspec --use-libraries,更新库版本。
4.组件封装成Framework
方法一:使用Xcode封装
新建一个Cocoa TouchFramwork项目,并将组件拉入项目
新建项目
在Build Settings设置Mach-O Type 为Static Library,Defines Module为NO
设置1
设置2
在Build Phases可以设置framework的公开和私有.h文件
Build Phases
DPNavc.h必须要公开并引用其他需公开的.h文件
DPNavc.h
command+B编译,就出现了framework,注意真机,和模拟机的framework是分开的,右键framework show in file,就能在文件中找到framework
生成framework
方法二:使用Cocoapods封装
安装cocoapods-packager插件,在终端输入sudo gem install cocoapods-packager安装插件
进入DPNavcLib.podspec,设置公开头文件,其他隐藏
DPNavcLib.podspec
image.png
进入DPNavcLib目录,执行以下命令
pod package DPNavcLib.podspec --library --force
pod package DPNavcLib.podspec --force
--library指定打包成.a文件,如果不带上会打包成.framework,--force表示强制覆盖
DPNavcLib目录中会出现封装好的文件夹
framework文件
5.上传Framework至Cocoapods
打开DPNavcLib.podspec,设置s.vendored_frameworks,这个是Framework文件目录,并更新s.version,将framework文件放入目录
DPNavcLib.podspec
注意:sourcefile和vendored_frameworks只能验证一个,若同时出现2个,则无法通过验证。
Framework文件目录按流程上传至git,并更新本地私有库,进行本地验证,再执行pod repo push DPNavc DPNavcLib.podspec --use-libraries,更新库版本
后续应该还有好多坑,碰到后再补充