在WWDC 2014全球开发者大会上,苹果开放了动态库、App Extension等全新的功能,这为iOS插件化开发带来了可能。在iOS开发中,动态库是iOS提供的一种资源打包方式,能够将代码文件、头文件、资源文件和说明文档等集中在一块儿,而且能够在运行时进行动态加载。ios
目前,不少应用越作越复杂,应用程序也显得愈来愈臃肿。试想一下,若是将一些不经常使用的功能作成一个插件,而后根据用户的需求从网络中下载,这样最大限度的利用了系统资源,这也是插件化开发的初衷。git
传统使用第三方库的劣势github
使用Cocoapods管理第三方库的优点json
trunk须要CocoaPods 0.33以上版本,可使用pod --version命令来查看本地的版本。 bash
sudo gen install cocoapods
pod setup
复制代码
接下来,须要查看本身是否注册过Trunk。网络
pod trunk me
复制代码
若是没有注册,可使用下面的命令进行注册:工具
pod trunk register zhangyqyx@163.com "zhangyqyx" --verbose
复制代码
其中,zhangyqyx表示名字,zhangyqyx@163.com表示注册的邮箱。注册时,系统会发送一个验证连接到你的邮箱,验证经过后即注册成功。注册成功后再次使用命令pod trunk me查看。 ui
##2, 建立GitHub仓库 要完成插件化开发的需求,首先须要在GitHub中建立一个远端的托管仓库。以下图: url
将项目克隆下来到本地,并添加公开库文件相关的信息,代码上传和下载建议使用SourceTree等图形化工具进行操做。 spa
##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' => '1044817967@qq.com'}
s.platform = :ios, '8.0'
s.source = {:git => 'https://github.com/xiangzhihong/pluginPods.git', :tag => s.version}
s.source_files = 'pluginPods/*'
end
复制代码
其中,上面配置的具体的含义为:
dependency写法:
s.dependency = 'AFNetworking' , 'SDWebImage'
复制代码
source_files写法:
'runtime/*'
'runtime/runtime/*.{h,m}'
'runtime/**/*.h'
复制代码
其中,
接下来,将你的源码添加到刚才s.source_files配置的目录。若是是OC编写的还须要配置公开的头文件。此处,我使用的是Swift编写的,就无论那么多了,若是有任何语法上的警告请忽略相关的警告。
将包含配置好的 .podspec, LICENSE 的项目提交 Git。命令以下:
git tag "v0.0.1" // 若是出现错误,试一下不加v的状况
git push --tags
复制代码
或者,直接使用sourcetree等图形化工具进行操做。例如:
若是咱们的tag打错了,没有用的话,咱们应该怎么删除呢?能够参考下面的方法: 一、查看tags git tag 就会罗列出咱们全部的tags
二、删除本地tags git tag -d + 分支名称就会删除本地的分支
三、删除远程分支 git push origin :refs/tags/分支名称 就删除了远程分支
为了验证是否上传成功,能够验证.podspec文件,命令以下:
pod spec lint WeexHMGesUnlock.podspec --verbose
复制代码
pod lib lint --allow-warnings
复制代码
发布时会验证 Pod 的有效性,若是你在手动验证 Pod 时使用了 --use-libraries 或 --allow-warnings 等修饰符,那么发布的时候也应该使用相同的字段修饰,不然出现相同的报错。
pod trunk push pluginPods.podspec
复制代码
pod trunk push pluginPods.podspec --allow-warnings
复制代码
使用下面的命令来验证,是否上传成功。
pod search pluginPods
复制代码
rm ~/Library/Caches/CocoaPods/search_index.json
pod setup
复制代码
若是仍是不行,估计是在你的项目还在审核中,你能够经过其余辅助手段去验证。例如,使用pod trunk me命令:
pod trunk push pluginPods.podspec
复制代码
若是刚才是用 pod lib lint --allow-warnings 验证成功的,就执行如下命令发布。
pod trunk push pluginPods.podspec --allow-warnings
复制代码
TIP:集成时如搜索不到,能够试着执行pod setup或pod repo update指令来更新pod,pod search搜索不到时,能够删除~/Library/Caches/CocoaPods下的search_index.json文件以更新索引(pod search搜索不到并不影响集成),由于国内使用的时镜像,也能够稍等一段时间后再更新。
建立私有库和建立Git库的流程大致类似:
一、建立一个私有的项目 能够是公司本身的git管理工具、也能够是码云上的,建立方法能够参考Git仓库的建立过程。
二、建立.podspec 使用pod spec create命令建立xxx.podspec文件。
三、编辑.podspec文件 编辑podspec文件,主要是添加项目库、托管地址、版本号、暴露的文件等。
四、上传到Git 将包含配置好的 .podspec, LICENSE 的项目提交 Git或私有云。
五、打tag
六、验证.podspec文件 使用pod spec lint来验证podspec文件是否配置正确,若是有任何的错误,请根据错误提示进行修改。若是是warning能够忽略,在指令后面添加--allow-warnings便可。例如:
pod lib lint --allow-warnings
复制代码
七、添加一个私有库并和项目地址作绑定
pod repo add xxx github.com/xiangzhihon…
八、向私有的库里添加podspec文件
九、新建一个项目进行验证
新建一个Xcode项目,在podfile中添加引用脚本,看是否可以成功的依赖,添加时注意版本号。
pod 'pluginPods', '~> 0.0.3'
若是,没有任何提示错误,则说明自定义插件建立成功。