目前我们越来越多的使用CocoaPods管理项目中使用到的第三方库,通过CocoaPods,我们可以单独的管理每一个第三方库,而不需要做太多配置,这种方便、高效的方式,已经成为“热门的开源项目”的必备配置,大家能想到的第三方,基本上是都支持CocoaPods安装—pod ‘AFNetWorking’ ~> x.x.x,想必都熟悉这种安装方式了,那么问题是:
自己也写了一些开源项目,怎么支持CocoaPods,让其他人pod search,然后pod install呢?
Start:这里拿自己写的开源项目swift版DRSAlertDialog举例,让其支持CocoaPods
step0:确保自己的开源项目在已经托管到github之类。。。我的项目已经在https://github.com/jakajacky/DRSAlertDialog
step1:进入工程一级目录下,打开go2shell,开始使用终端&没有go2shell,则打开终端并cd到工程的一级目录,我的工程来说就是进入DSRAlertDialog
step2:创建.podspec文件
pod spec create DRSAlertDialog
效果图:
step3:编辑.podspec文件
vi DRSAlertDialog.podspec
.podspec文件已经是一个模板,根据自己的项目进行相应的修改即可,可以参考下面我写的,改项目name、summary、source、source_file、resources_bundle等一些属性成自己的即可:
Pod::Spec.new do |s|
s.name = "DRSAlertDialog" // 第三方名字
s.version = "0.0.1" // 版本号
s.summary = "A short description of DRSAlertDialog." // 描述
s.homepage = "https://github.com/jakajacky/DRSAlertDialog" // 主页,写其他地址也可
s.license = "MIT" // 证书,一般都是在github创建项目时选择的MIT类型证书自动生成;也可以手动创建,MIT License模板:http://choosealicense.com/licenses/mit/
s.author = { "xqzh" => "xqzh@ideabinder.com" } // 作者
s.platform = :ios, "9.0" // 平台
s.source = { :git => "https://github.com/jakajacky/DRSAlertDialog.git", :tag => "0.0.1" } // 你的第三方的地址,决定别人能不能安装,我的是在github上
s.source_files = "DRSAlertDialog/Pod", "DRSAlertDialog/Pod/*.{swift}" // 第三方的核心文件,别人需要用到的文件。建议当地工程的指定文件夹中,便于管理,EX:我的是在DRSAlertDialog/Pod文件夹下。\ *号是通配符,表示Pod文件夹下所有的.swift文件
s.resource_bundles = {'DRSAlertDialog' => ['DRSAlertDialog/Resources/*.png']} // 如果你的第三方有一些图片等资源,需要这样配置,这样别人使用cocoapods安装你的第三方,照片也会跟随。
s.requires_arc = true
end
这里要说明,我的开源项目没有依赖其他第三方库和系统库,如果大家的用到了,除了上面的一些主要的,还需要配置如下:
如果开源项目依赖系统库
# s.framework = 'SomeFramework'// 去掉#,设置依赖的系统库名称
# s.frameworks = 'SomeFramework', 'AnotherFramework'//设置多个系统库名称
# s.library = 'iconv'// 设置只依赖一个系统的library
# s.libraries = 'iconv', 'xml2' // 设置依赖多个系统的library
# s.xcconfig = { 'HEADER_SEARCH_PATHS' => '$(SDKROOT)/usr/include/libxml2' }// 这里是工程配置,这样使用者就不需要手动处理,由pod自动处理了
如果开源项目依赖其他第三方库
s.dependency 'JSONKit', '~> 1.4'//设置我们的开源库依赖哪些第三方库和依赖的版本号。
写完上面的podspec文件,需要验证一下我们写的这个podspec文件配置是否正确:
step5:验证podspec文件
pod lib lint DRSAlertDialog.podspec --allow-warnings // 也可以使用 --verbose 查看更多反馈信息
如果验证通过,会出现类似下面提示:
如果配置有错,重新修改podspec文件,继续验证!!!验证通过后,就先将本地podspec文件push到github等:
git push origin ....
// 别忘了打个tag,用于第三方版本号,这里我用了0.0.1,
git tag 0.0.1
git push --tags
step6:提交podspec文件到CocoaPods
pod trunk push DRSAlertDialog.podspec --allow-warnings
如果出现警告,根据警告修改相关内容,有可能是podspec文件内容有问题,即使我们pod lib lint验证过了。还有一种普遍的情况是:提示类似“register session”之类的话,这是需要我们注册trunk:
pod trunk register jack_zhangx@cocoapods.org 'jack_zhangx' --description='macbook air'
继续pod trunk push DRSAlertDialog.podspec,成功之后,如下图:
接下来,我们就可以很装逼的让别人 pod search DRSAlertDialog、pod ‘DRSAlertDialog’, ‘~> 0.0.1’。
附上开源项目地址,可以看具体的配置 https://github.com/jakajacky/DRSAlertDialog,不拒绝start、fork!(^o^)/~