开发中用cocoapods管理第三方库,已经非常普遍.为了创建自己的cocoapods库,需要对cocoapods的实现逻辑有所了解.下图,是我创建cocoapods成功后,对其关系的理解:
cocoapods仓库托管来自Github的项目代码,当在项目中使用cocoapods时,其代码目录下载到repo文件夹下.通过命令行
cd ~/.cocoapods
可以看到如下文件结构:
pod search 命令就是检索master文件夹,来寻找需要的三方库.
仿照上述cocoapods实现原理,可以创建自己的私有库.思路如下:
1创建用于其他项目引用的第三方工程代码A;
2创建类似cocoapods的库B,用来存放第三方工程代码A;
3将库B放到repo文件夹下,供pod search命令检索及项目下载;
步骤1和2的实现可以参考如下两个教程:
1制作 CocoaPods 依赖库
2如何创建私有 CocoaPods 仓库
按照作者的步骤实现过程中,出现了如下问题:
1 .podspec文件的修改后依然出现
- NOTE | [03View/TestTarget] xcodebuild: /Users/zhudong/03View/03View/Test1/Test1.h:11:17: note: add a super class to fix this problem
[!] 03View did not pass validation, due to 2 errors and 2 warnings.
[!] The validator for Swift projects uses Swift 3.0 by default, if you are using a different version of swift you can use a `.swift-version` file to set the version for your Pod. For example to use Swift 2.3, run:
`echo "2.3" > .swift-version`.
You can use the `--no-clean` option to inspect any issue.
localhost:03View zhudong$ pod lib lint
可参照如下对文件语句的注释进行检查
Pod::Spec.new do |s| #s代表文件夹位置为一级,ss代表文件夹位置为二级
s.name = "03View"
s.version = "0.0.9"
s.summary = "guoxin-trade for iOS project."
s.description = <<-DESC
03ViewTest
DESC
s.homepage = "https://github.com/zhudong10/03View"
s.license = { :type => "MIT", :file => "LICENSE" }
s.author = { "zhudong" => "zhudongdong@91guoxin.com" }
s.source = { :git => "https://github.com/zhudong10/03View.git", :tag => "#{s.version}" }
s.source_files = "03View/TestHeader.h" #此处需要在本级目录下找到文件
# 目的文件夹名称 #
#s.subspec 'TestTarget' do |ss|
# 文件来源 #
# ss.source_files = '03View/Test1/**/*.{h,m}'
# 资源文件 #
#ss.resources = '03View/**/*.xcassets'
#end
end
2 使用命令
pod repo add O2Specs https://github.com/marklin2012/O2Specs.git
创建02Sepcs文件后,使用
pod repo push O2Specs O2View.podspec
命令无效果,重新尝试两遍就行啦.
相信经过上面的操作,会对cocoapods会有更深的体会和理解.而深刻的理解,是实现项目模块化的基础,后面我会把项目采用的模块化方式也分享一下.
喜欢和收藏都是对我的鼓励和支持~