1、基于pod自动创建项目(演示项目名:XHLib)
执行命令pod lib create XHLib
。创建过程中会询问以下几个问题:
What language do you want to use?? [ Swift / ObjC ]
> ObjC
Would you like to include a demo application with your library? [ Yes / No ]
> Yes
Which testing frameworks will you use? [ Specta / Kiwi / None ]
> None
Would you like to do view based testing? [ Yes / No ]
> NO
What is your class prefix?
> XH
第二个问题询问是否提供一个demo项目,通常选择Yes,其他的可以根据需要选择。命令执行完后,就会创建好一个通过cocoapods管理依赖关系的基本类库框架。
按照默认配置,类库的源文件将位于XHLib/Classes文件夹下,资源文件位于XHLib/Assets文件夹下,Demo文件位于Example文件夹下


2、创建远端仓库,将本地仓库与远端仓库进行关联
3、编辑 XHLib.podspec文件
打开XHLib.podspec文件,修改类库配置信息
Pod::Spec.new do |s|
s.name = 'XHLib'
s.version = '0.0.1'
s.summary = 'A short description of XHLib.'
s.description = <<-DESC
TODO: Add long description of the pod here.
DESC
s.homepage = 'https://github.com/XHJCoder/XHLib'
s.license = { :type => 'MIT', :file => 'LICENSE' }
s.author = { 'XHJCoder' => '1149949564@qq.com' }
s.source = { :git => 'https://github.com/XHJCoder/XHLib.git', :tag => s.version.to_s }
s.ios.deployment_target = '8.0'
# s.ios.vendored_frameworks = 'XHLib.framework'
s.source_files = 'XHLib/Classes/**/*'
s.dependency 'SVProgressHUD'
# s.screenshots = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
# s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'
# s.resource_bundles = {
# 'XHLib' => ['XHLib/Assets/*.png']
# }
# s.public_header_files = 'Pod/Classes/**/*.h'
# s.frameworks = 'UIKit', 'MapKit'
# s.requires_arc = true
end
podspec文件的简单说明:
s.name:名称,pod search 搜索的关键词,注意这里一定要和.podspec的名称一样,否则报错
s.version:版本号
s.ios.deployment_target:支持的pod最低版本
s.summary: 简介
s.description: 详细描述
s.homepage:项目主页地址
s.license:许可证
s.author:作者
s.social_media_url:社交网址
s.source:项目地址
s.source_files:需要包含的源文件
s.resources: 资源文件
s.requires_arc: 是否支持ARC
s.dependency:依赖的三方库
s.frameworks:依赖的系统的框架
s.ios.vendored_frameworks:自己的framework
podspec文件的详细说明:Podspec Syntax Reference。
4、进入Example文件夹下,执行pod install,让demo项目安装依赖项并更新配置。

5、添加需要封装的代码
将需要封装的代码存放到XHLib/Classes目录下:

在项目中的位置:

注意⚠️:只要XHLib/Classes目录有变动就需要重新执行Pod install或者切换到XHLib “command+B”一下 来更新配置。

(如果上图这个位置没有XHLib,进入Manage Schemes进行添加)
前面操作完成后可以在demo项目中调用测试。
6、库上传前相关配置
静态库
1)制作静态库
进入Pods -> TARGETS -> XHLib,配置静态库。具体操作请看:静态库(.framework)制作

2)找到生成的.framework文件,移动到你想要放的位置(该位置必须与podspec文件里s.ios.vendored_frameworks的位置一样)

我的项目里将.framework文件放在与podspec文件同一级目录下

3)修改podspec文件
s.ios.vendored_frameworks = 'XHLib.framework'
开源库
1)修改podspec文件
s.source_files = 'XHLib/Classes/**/*'
7、进行上传
1)提交修改并给这次提交打上 tag,上传到git
git commit -a -m 'v0.0.1'
git tag '0.0.1'
git push --tags
git push origin master
2)验证类库(可以通过添加--allow-warnings忽略一些警告)
pod lib lint XHLib.podspec
或
pod lib lint XHLib.podspec --allow-warnings
出现 xxxxx passed validation
表示验证通过.
3)上传类库
pod trunk需要注册 具体做法请看Getting setup with Trunk
pod trunk push

注意⚠️:刚上传成功后,可能通过pod search无法找到,可以过几天再看看。
8、测试上传到cocoapods上的类库是否可用
1)修改Podfile文件

2)进入Example目录下 执行pod install

3)在demo中调用,看是否可调用

其他
删除本地tag
git tag -d 0.0.1
删除远端tag
git push origin :0.0.1
//也可以这样
git push origin --delete tag 0.0.1
删除上传到cocoapods上的代码
pod trunk delete XHLib 0.0.1
参考:
http://www.cnblogs.com/brycezhang/p/4117180.html
http://www.jianshu.com/p/f841e248bc4f
网友评论