使用podspec创建属于自己的插件

概述

在WWDC 2014全球开发者大会上,苹果开放了动态库、App Extension等全新的功能,这为iOS插件化开发带来了可能。在iOS开发中,动态库是iOS提供的一种资源打包方式,可以将代码文件、头文件、资源文件和说明文档等集中在一起,并且可以在运行时进行动态加载。

目前,很多应用越做越复杂,应用程序也显得越来越臃肿。试想一下,如果将一些不常用的功能做成一个插件,然后根据用户的需求从网络中下载,这样最大限度的利用了系统资源,这也是插件化开发的初衷。

使用Cocoapods的优势

传统使用第三方库的劣势
1、使用一个第三方SDK,需要在工程里面添加一堆配置,少添加一步配置就会报一大堆错误。这个时候为了排查少了哪一个步骤,只能从头开始重做一遍,太浪费时间和精力。有些配置还不好配置,就更使人烦躁郁闷了。
2、如果使用的第三方SDK有比较重要的更新,想使用最新的SDK只能到官方下载最新的SDK,重新导入到自己的项目工程中。
3、如果公司有多个项目,每一个工程都这样配置一遍,这是多么痛苦的领悟呀。

使用Cocoapods管理第三方库的优势
1、我们可以避免上诉的问题,使用方便。
2、方便我们自己管理,只需要更新版本就行了,以前的库还可以保留让他人使用。

创建插件库

1,注册Trunk

trunk需要CocoaPods 0.33以上版本,可以使用pod --version命令来查看本地的版本。
使用podspec创建属于自己的插件
如果版本太低,可以使用下面的指令升级:

sudo gen install cocoapods
pod setup

接下来,需要查看自己是否注册过Trunk。

pod trunk me

如果没有注册,可以使用下面的命令进行注册:

pod trunk register [email protected] "zhangyqyx" --verbose

其中,zhangyqyx表示名字,[email protected]表示注册的邮箱。注册时,系统会发送一个验证链接到你的邮箱,验证通过后即注册成功。注册成功后再次使用命令pod trunk me查看。
使用podspec创建属于自己的插件

##2, 创建GitHub仓库
要完成插件化开发的需求,首先需要在GitHub中创建一个远端的托管仓库。如下图:
使用podspec创建属于自己的插件

将项目克隆下来到本地,并添加公开库文件相关的信息。
##3, podspec
使用如下命令创建.podspec文件,创建的命令如下:

pod spec create WeexHMGesUnlock

其中,WeexHMGesUnlock为库的名称。然后,打开并编辑.podspec文件。

Pod::Spec.new do |s|
  s.name         = "WeexHMGesUnlock"
  s.version      = "0.0.1"
  s.ios.deployment_target = '8.0'
  s.summary      = "简介:手势密码解码"
  s.homepage     = "https://github.com/xiangzhihong/WeexHMGesUnlock"
  s.social_media_url = 'https://www.baidu.com'
  s.license      = "MIT"
  s.author       = { "xiangzhihong" => "[email protected]" }
  s.source       = { :git => 'https://github.com/xiangzhihong/WeexHMGesUnlock.git', :tag => s.version}
  s.requires_arc = true
  s.source_files = 'runtime/*'
  #s.public_header_files = 'runtime/TFRuntimeManager.h'
 
end

其中,上面配置的具体的含义为:

  • s.name:名称,pod search 搜索的关键词,注意这里一定要和.podspec的名称一样,否则报错。
  • s.version:版本号。
  • s.ios.deployment_target:支持的pod最低版本
  • s.summary: 项目简介
  • s.homepage:项目主页地址
  • s.social_media_url:社交网址
  • s.license:许可证
  • s.author:作者
  • s.source:项目的地址
  • s.requires_arc: 是否支持ARC
  • s.source_files:需要包含的源文件
  • s.public_header_files:公开的头文件
  • s.resources: 资源文件
  • s.dependency:依赖库,不能依赖未发布的库,可以写多个依赖库

4,上传Git

将包含配置好的 .podspec, LICENSE 的项目提交 Git。命令如下:

git tag "v0.0.1"     // 如果出现错误,试一下不加v的情况
git push --tags

使用podspec创建属于自己的插件
使用podspec创建属于自己的插件
如果我们的tag打错了,没有用的话,我们应该怎么删除呢?可以参考下面的方法:
1、查看tags
git tag 就会罗列出我们所有的tags

2、删除本地tags
git tag -d + 分支名称就会删除本地的分支

3、删除远程分支
git push origin :refs/tags/分支名称 就删除了远程分支

为了验证是否上传成功,可以验证.podspec文件,命令如下:

pod spec lint WeexHMGesUnlock.podspec --verbose

使用podspec创建属于自己的插件
如果出现这种警告性的问题,我们可以直接忽略。

pod lib lint --allow-warnings

如果出现这种情况,可能是你的那个版本找不到这个文件。
使用podspec创建属于自己的插件

5,发布

发布时会验证 Pod 的有效性,如果你在手动验证 Pod 时使用了 --use-libraries 或 --allow-warnings 等修饰符,那么发布的时候也应该使用相同的字段修饰,否则出现相同的报错。

pod trunk push WeexHMGesUnlock.podspec

6, 验证仓库

使用下面的命令来验证,是否上传成功

pod search WeexHMGesUnlock.

如果刚才是用 pod lib lint 验证成功的,就执行以下命令发布。

pod trunk push WeexHMGesUnlock.podspec

如果刚才是用 pod lib lint --allow-warnings 验证成功的,就执行以下命令发布。

pod trunk push WeexHMGesUnlock.podspec --allow-warnings

使用podspec创建属于自己的插件

创建私有库

1、创建一个私有的项目(可以是公司自己的git管理工具、也可以是码云上的),创建方法同公共库的第二步

2、创建.podspec

方法同公共库创建的第三步

3、编辑.podspec文件

方法同公共库创建的第四步

4、上传到Git

方法同公共库创建的第六步

5、打tag

方法同公共库创建的第七步

6、验证.podspec文件

方法同公共库创建的第八步

7、添加一个私有库并和项目地址做绑定

pod repo add ZYRunTimeCoT https://github.com/zhangyqyx/ZYRunTimeCoT.git

8、向私有的库里添加podspec文件

pod repo push ZYRunTimeCoT ZYRunTimeCoT.podspec

9、新建一个项目进行验证

xcode新建项目 在podfile中添加

pod ‘ZYRunTimeCoT’, ‘~> 0.0.1’

如果提示 ‘unable to find a specification for’

需要在podfile文件中添加源地址

source ‘https://github.com/zhangyqyx/ZYRunTimeCoT.git