通过本地私有库实现组件化开发
组件化开发分为本地私有库和远程私有库,这里我们先来学习如何通过本地私有库实现组件化的开发项目。首先我们需要一个本地私有库
如图一所示,Extensions文件夹就是我们的本地私有库
命令行下进入Extensions的根目录文件夹,通过命令
pod spec create Extensions
创建属于Extensions的podspec文件使用XCode打开Extensions.podspec文件,修改文件的配置信息
s.name = "Extensions"
s.version = "0.0.1"
s.summary = "Extensions."
// s.description的内容必须比s.summary长
s.description = "Extensions.swift extensions"
// 本地私有库s.homepage保持默认无需修改
s.homepage = "http://EXAMPLE/Extensions"
s.license = "MIT"
s.author = { "brianbryant" => "brianbryant@126.com" }
// 当前私有库文件需要指定支持的iOS版本
s.ios.deployment_target = "10.0"
// 本地私有库的git地址为空,如下(原:s.source = { :git => "http://EXAMPLE/Extensions.git", :tag => "#{s.version}" })
s.source = { :git => "", :tag => "#{s.version}" }
// classes为本地私有库的库文件所属文件夹的名称,h、m代表库文件的后缀名,这里是swift私有库,故新增swift
s.source_files = "Classes", "Classes/**/*.{h,m,swift}"
s.exclude_files = "Classes/Exclude"
到目前为止我们的本地私有库就已经配置好了。接下来我们测试该本地私有库是否可以正常使用。
首先如图三所示,我们创建了一个新的宿主工程XiaoMiMall
接下来我们要在XiaoMiMall工程中集成图一所示的本地私有库Extensions
然后命令行进入XiaoMiMall工程根目录,使用命令
pod init
创建cocoapods的配置文件Podfile修改配置文件内容
platform :ios, '9.0'
target 'XiaoMiMall' do
use_frameworks!
// 集成本地库的配置,'../Extensions'找到Extension.podspec文件
pod 'Extensions', :path => '../Extensions'
end
执行pod install
命令安装本地私有库到项目XiaoMiMall中
安装完成后打开后缀名为xcworkspace的文件
打开工程后可以在如图六所示位置查看到本地私有库Extensions已经成功集成到项目中了
注意
- 本地私有库不需要使用命令
pod lib lint
或pod spec lint
验证podspec文件的正确性
本地私有库方案优化
以上集成本地私有库的方案存在的问题
- 需要手动通过
pod spec create Extensions
命令创建podspec文件 - 没有使用git管理本地私有库。(如果使用,需要手动通过git进行管理本地私有库)
- 无法很方便的测试本地私有库。(测试需要再次创建测试工程集成本地私有库进行测试)
通过命令pod lib create Extensions
创建与本地私有库同名的模板库
创建过程中会需要输入一些信息,根据自己需要根据提示输入
What platform do you want to use?? [ iOS / macOS ]
> iOS
What language do you want to use?? [ Swift / ObjC ]
> Swift
Would you like to include a demo application with your library? [ Yes / No ]
> No
Which testing frameworks will you use? [ Quick / None ]
> None
Would you like to do view based testing? [ Yes / No ]
> No
最后得到如图七所示的与本地私有库同名的模板库文件
打开Example工程,我们会看到图八所示
图八中我们需要用我们的本地私有库文件替换ReplaceMe.swift文件
首先我们注意到Example的Podfile文件内容
use_frameworks!
target 'Extensions_Tests' do
pod 'Extensions', :path => '../'
end
根据路径path提示,Podfile会找到上一级目录中的Extensions文件夹下的内容,再根据Extensions.podspec文件内容的s.source_file路径Extensions/Classes/**/*
提示,然后会找到Extensions下的Classes文件夹的所有内容,所以把本地私有库的内容放置到Extensions文件夹下,如图九所示
进入Example所在根目录下,执行
pod install
命令替换ReplaceMe.swift文件后如图十所示接下来我们可以在Example工程中对本地私有库文件进行测试