专栏名称: xiangzhihong
前端跨平台工程师、客户端工程师
目录
相关文章推荐
跟宇宙结婚  ·  节目更新:跟宇宙结婚悄悄话 vol.249 ... ·  昨天  
跟宇宙结婚  ·  回味首映礼:2024年在《头脑特工队2》首映 ... ·  2 天前  
51好读  ›  专栏  ›  xiangzhihong

使用podspec创建iOS插件

xiangzhihong  · 掘金  ·  · 2018-12-26 09:50

正文

阅读 16

使用podspec创建iOS插件

概述

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

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

使用Cocoapods的优势

传统使用第三方库的劣势

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

使用Cocoapods管理第三方库的优势

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

创建插件库

1,注册Trunk

trunk需要CocoaPods 0.33以上版本,可以使用pod --version命令来查看本地的版本。

在这里插入图片描述
如果版本太低,可以使用下面的指令升级:

sudo gen install cocoapods
pod setup
复制代码

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

pod trunk me
复制代码

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

pod trunk register [email protected] "zhangyqyx" --verbose
复制代码

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

在这里插入图片描述

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

在这里插入图片描述

将项目克隆下来到本地,并添加公开库文件相关的信息,代码上传和下载建议使用SourceTree等图形化工具进行操作。

在这里插入图片描述

##3, podspec 使用如下命令创建.podspec文件,创建的命令如下:

pod spec create pluginPods
复制代码

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

Pod::Spec.new do |s|
    s.name         = 'pluginPods'
    s.version      = '0.0.3'
    s.summary      = '自定义轮播插件'
    s.homepage     = 'https://github.com/xiangzhihong/pluginPods'
    s.license      = 'MIT'
    s.authors      = {'xiangzhihong' => '[email protected]'}
    s.platform     = :ios, '8.0'
    s.source       = {:git => 'https://github.com/xiangzhihong/pluginPods.git', :tag => s.version}
    s.source_files = 'pluginPods/*'
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:依赖库,不能依赖未发布的库,可以写多个依赖库

常见的写法

dependency写法:

s.dependency = 'AFNetworking' , 'SDWebImage'
复制代码

source_files写法:

'runtime/*'
'runtime/runtime/*.{h,m}'
'runtime/**/*.h'
复制代码

其中,

  • '*'表示匹配所有文件;
  • '*.{h,m}' 表示匹配所有以.h和.m结尾的文件;
  • '**' 表示匹配所有子目录

4,添加源码

接下来,将你的源码添加到刚才s.source_files配置的目录。如果是OC编写的还需要配置公开的头文件。此处,我使用的是Swift编写的,就不管那么多了,如果有任何语法上的警告请忽略相关的警告。







请到「今天看啥」查看全文