您的位置:首页 > 其它

如何配置自己的开源项目,支持使用CocoaPods

2016-06-02 15:38 465 查看
目前我们越来越多的使用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^)/~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息