CocoaPods:为Swift创建私有Pods
之前使用OC时,鼓捣了一下CocoaPods的创建,翻译了一篇国外的文章,发布在了简书。但是一直没有把这个技术放在实际的开发中,也遗忘的差不多了。最近工作中强烈的感觉到模块化开发的重要性,所以打算把CocoaPods拾起来。之前翻译的文章中的方式跟现在已经大有不同。
研究了两天,制作了公共Pods和私有Pods,都验证成功。去掉了多余的步骤,精简为以下几步,方便以后查阅。
-
在Git托管平台上(github、码云、gitlab……)创建一个仓库,我这里在码云创建了
https://gitee.com/mob_developer/MDBase.git
-
执行
pod repo add MDBase https://gitee.com/mob_developer/MDBase.git
命令,将私有仓库添加到CocoaPods中。再执行cd ~/.cocoapods/repos
命令,就能在cocoapods的repos中看到MDBase了; -
执行
cd ~/.cocoapods/repos/MDBase
命令到MDBase文件夹,执行pod spec create MDBase
创建MDBase.podspec
文件,这个文件是我们的私有库的配置文件 -
在MDBase中创建Pod文件夹,在Pod文件夹下分别创建Classes、 Assets文件夹。 Classes用来放私有Pod源码。Assets文件夹下放png资源文件
-
执行
open MDBase.podspec -a Xcode
命令,使用Xcode打开podspec文件。之后我们在podspec文件中根据需求编辑。以下为模板# # Be sure to run `pod lib lint ${POD_NAME}.podspec' to ensure this is a # valid spec before submitting. # 在提交之前执行`pod lib lint MDBase.podspec`以确保spec是有效的。 # # 以#开头的都是可选的,但是推荐使用。 # 了解更多Podspec信息: https://guides.cocoapods.org/syntax/podspec.html # Pod::Spec.new do |s| s.name = 'MDBase' s.version = '0.1.0' s.summary = '私有仓库概述' # This description is used to generate tags and improve search results. # * Think: What does it do? Why did you write it? What is the focus? # * Try to keep it short, snappy and to the point. # * Write the description between the DESC delimiters below. # * Finally, don't worry about the indent, CocoaPods strips it! s.description = <<-DESC 私有仓库详细描述 DESC s.homepage = 'https://gitee.com/mob_developer/PublicPodTests' # s.screenshots = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2' s.license = { :type => 'MIT', :file => 'LICENSE' } s.author = { '名字' => '邮箱' } s.source = { :git => 'https://gitee.com/mob_developer/MDBase.git', :tag => s.version.to_s } # s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>' s.ios.deployment_target = '8.0' s.source_files = 'Pod/Classes/**/*' s.swift_version = '4.1' # s.resource_bundles = { # '${POD_NAME}' => ['${POD_NAME}/Assets/*.png'] # } # s.public_header_files = 'Pod/Classes/**/*.h' # s.frameworks = 'UIKit', 'MapKit' # 依赖的第三方库 s.dependency 'AFNetworking' end
-
将私有库的代码文件放在Classes文件夹中
-
将MDBase同步到它的仓库上
-
打上标签,标签要与podspec文件中的
s.version
的值一致 -
终端执行
pod lib lint
,以检查配置文件是否正确PublicPodTests (0.1.0)
- ERROR | [iOS] file patterns: Thesource_files
pattern did not match any file.遇到上面的问题是因为,在POD/Classes文件夹下没有任何文件。此时我们把我们的库文件放进去。再次执行'pod lib lint',知道没有错误,终端给出以下信息,表示成功
PublicPodTests passed validation.
-
回到MDBase文件夹下,执行
pod repo push MDBase MDBase.podspec
,等待执行成功,一个私有Pod就创建成功了 -
在Podfile中使用私有库的方法
platform :ios, '9.0' source 'https://gitee.com/mob_developer/MDBase.git' source 'https://github.com/CocoaPods/Specs.git' target 'SwiftNetworkingExample' do use_frameworks! pod 'MDBase', git:'https://gitee.com/mob_developer/MDBase.git' end
-
最后
pod install
,工程中导入MDBase库,大功告成!
如果要创建公共Pods库,则在从10中要执行:
pod trunk register 邮箱 '名字' --description='描述'
,以注册仓库。之后所填的邮箱会受到一封验证邮件,点击链接,验证成功。之后执行pod trunk push MDBase.podspec
命令,一个公共Pods就创建成功了。使用的方式就跟使用其他公共仓库的方式一样。