CocoaPads作为管理第三方库的神器,有时候自己写的好的库也希望,放在上面去,不敢说给别人用,让别人喜欢,最起码自己熟悉,下次自己倒进来就能用,也有也有人喜欢把那些库打成.a的包,这样也可以。只要你喜欢随便喽。我是觉得打包成.a不太方便版本管理,不太方便升级维护。
网上有很多博客讲解怎么制作库的,每篇文章各有侧重点,自己制作一下就知道各种各样的坑。记录下这些坑。
一 制作第一个CocoaPods库
原理:CocoaPods大概相当一个服务器,管理各种ios和Swift的第三方库的服务器。使用pod导入别人的代码像AFNetworking,就是去服务器上下载。
假设你的项目是放在github上面托管的,先给项目打上一个tag,其实就是要制作的库的代码的稳定的运行版本,这个版本号,就是告诉别人在用pod导入的时候倒入那个版本。会在.podspec 中配置。
创建配置文件-.podspec 一般在和.git 同级目录下创建配置文件,下面的库名就是到时候发布到Cocoapod服务器上的名字,使用pod search 能找得到的。这个名字我曾经试图修改过,没成功,所以填写要慎重。
pod spec create “库名”
3.创建好之后,目录下会多一个 库名.podspec的配置文件
Pod::Spec.new do |s|
s.name = “库名”
s.version = “1.0.0” 版本
s.summary = “空视图处理”
s.description = “A UIView category for showing empty datasets whenever the view has no content to display.” 库的介绍
s.homepage = “https://github.com/lupeihong/Test” 库的远程地址
s.license = { :type => “MIT”, :file => “LICENSE” }
s.author = { “lupeihong” => “123456@qq.com” }
作者的名字,库成功发布后,cocoapod官方会发邮件给你
s.platform = :ios, “6.0” 库运行的平台
# When using multiple platforms
# s.ios.deployment_target = “5.0”
不能乱配,支持这个平台,就别写这个,否则检测配置文件是会报错的。
s.source = { :git => “https://github.com/lupeihong/Test.git“, :tag => “v#{s.version}” } 源代码远程仓库地址
s.source_files = “Classes”, “Test/UIView+Test.{h,m}”
库文件目录,将来这个目录下的文件会被作为第三方库文件导入工程,bundle文件不导入,配置了也白搭。
资源文件要通过这个属性配置。注意路径不能写错了。
s.framework = “UIKit” 运行这个库依赖的系统库
# s.frameworks = “SomeFramework”, “AnotherFramework”
# s.library = “iconv”
# s.libraries = “iconv”, “xml2”
s.requires_arc = true
# s.xcconfig = { “HEADER_SEARCH_PATHS” => “$(SDKROOT)/usr/include/libxml2” }
# s.dependency “JSONKit”, “~> 1.4”
依赖的其它的第三方库,如果填写这个,再导入你制作的库的同时会导入依赖的库。
end
- 检测配置的文件是否有错
pod spec lint MDPodSpec.podspec –allow-warnings
我遇到的问题有:
1. 配置默认swift的版本:echo "2.3" > .swift-version
.
2. 依赖第三方库不支持现在所配置运行的系统。如依赖第三方库本不支持ox10.7 你的库依赖第三方库,你配这个就有问题了。
3. 若是代码中有警告在监测是加上 –allow-warnings 就行了。
4. 报错[-Werror,-Wnon-modular-include-in-framework-module] 在检测命令后面加上–use-libraries 即可
5.监测通过就后,告诉你:’库名’.podspec passed validation. 接着就可以把库发布到,CocoaPods的服务器上
pod trunk push ‘库名’.podspec
若代码中有警告需在后面加上 –allow-warnings
6. 发布成功后
二 更新CocoaPods中的版本
- 更新第一步先给远程仓库的代码打tag
- 修改.podspec 的配置文件
- 检测配置文件(上面第4步)
- 发布盖版本到Cocoapod服务器(上面第5步)
三 pod库中添加资源文件
这个在配置添配置文件中提到,一定要在s.resources 这个属性中配置,重要的事情再说一遍,也可参考http://www.tuicool.com/articles/73aUfmq
参考文章
- http://blog.csdn.net/bluefish89/article/details/48030941
- http://www.tuicool.com/articles/73aUfmq
- http://www.jianshu.com/p/4c08be08731e