【潮汐】iOS用Cocoapods管理本地(framework)
用 Cocoapods 管理本地库
众所周知,我们在写SDK时,会考虑尽量避免使用第三方库,尽量给自己的类名或图片名起的特别一些,比如加"NS"前缀等,这些都是为了避免一个问题(冲突),但我们也会发现,Cocoapods引入得第三方库为什么不会冲突,这就是私有库的魅力,下面开始学习如何从零构建一个可以使用的本地私有库。
学习从创建主工程开始,到完美调用为止,执行一遍完整的流程。
1. 创建主项目Demo工程
首先,创建一个名为DWBChaoxiDemo
的工程放在桌面上,并配置好Cocoapods管理三方库(如管理AFN),如图
2. 开始创建本地私有库
接着我们打开终端,利用pods创建私有库,私有库名字为:CXThreeKu
,命令如下
pod lib create CXThreeKuTwo
不出意外,会出现如图所示的询问指令(初始化配置私有库),根据需要回答即可
image.png
按下回车,本地私有库就创建好啦,此时会自动弹出一个Example
工程,名字为:CXThreeKuTwo
,如图所示
可以在这里开发我们的SDK,当然,我们直接把framework等私有库链接到主工程,在主工程里开发。
电脑里找到私有库,把私有库项目拖到做面上来,私有库文件目录如下图所示:
文件目录3. 将framework、bundle图片资源等导入到本地私有库里
3.0、在私有库目录CXThreeKuTwo
里建立个文件夹FM
将三方库放到文件夹里,如图
3.1、通过私有库项目打开:CXThreeKuTwo ==> Example ==> CXThreeKuTwo.xcworkspace
打开项目,找到CXThreeKuTwo.podspec
进行配置。(如路径:FM/CXKeyBoard.framework')
3.2、配置文件如下(以导入:CXKeyBoard.framework和CXKeyBoardRes.bundle为例子):
#
# Be sure to run `pod lib lint CXThreeKuTwo.podspec' to ensure this is a
# valid spec before submitting.
#
# Any lines starting with a # are optional, but their use is encouraged
# To learn more about a Podspec see https://guides.cocoapods.org/syntax/podspec.html
#
Pod::Spec.new do |s|
s.name = 'CXThreeKuTwo'
s.version = '0.1.0'
s.summary = 'A short description of CXThreeKuTwo.'
# 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
TODO: Add long description of the pod here.
DESC
s.homepage = 'https://github.com/daiweibao/CXThreeKuTwo'
# s.screenshots = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
s.license = { :type => 'MIT', :file => 'LICENSE' }
s.author = { 'daiweibao' => '497266156@qq.com' }
s.source = { :git => 'https://github.com/daiweibao/CXThreeKuTwo.git', :tag => s.version.to_s }
# s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'
#【潮汐注释】最低支持版本号,demo里pod的Podfile文件里使用时候platform要保持跟这里一致,不然好不到路径
s.ios.deployment_target = '9.0'
s.source_files = 'CXThreeKuTwo/Classes/**/*'
# s.resource_bundles = {
# 'CXThreeKuTwo' => ['CXThreeKuTwo/Assets/*.png']
# }
# s.public_header_files = 'Pod/Classes/**/*.h'
# s.frameworks = 'UIKit', 'MapKit'
# s.dependency 'AFNetworking', '~> 2.3'
#【潮汐注释】导入本地私有库
s.vendored_frameworks = [
'FM/CXKeyBoard.framework']
#【潮汐注释】导入本地私有库的图片资源
s.resources = [
'FM/CXKeyBoardRes.bundle'
]
#多个framework导入方式如下
# s.vendored_frameworks = [
# 'FM/CXKeyBoard.framework',
# 'FM/MGBaseKit.framework',
# 'FM/MGIDCard.framework']
#
# s.resources = [
# 'FM/CXKeyBoardRes.bundle',
# 'FM/MGIDCardResource.bundle'
# ]
# 依赖的三方 SDK
# s.dependency 'AFNetworking', '~> 3.0.0'
# s.vendored_frameworks = [
# '文件夹名/xxx.framework',
# '文件夹名/frameworks/xxx.framework',
# '文件夹名/frameworks/xxx.framework',
# '文件夹名/frameworks/xxx.framework',
# ]
# s.resources = [
# '文件夹名/xxx.bundle',
# '文件夹名/resources/xxx.bundle',
# '文件夹名/resources/xxx.bundle',
# ]
end
3.3、【重点】配置好路径后,终端cd到CXThreeKuTwo ==> Example 下进行pod install导入。pod后私有库目录如下图:
image.png4. 将本地私有库CXThreeKuTwo
链接到主工程DWBChaoxiDemo
主工程打开Podfile文件配置如下
注意platform :ios, '9.0',版本号一定要跟私有库CXThreeKuTwo.podspec里s.ios.deployment_target = '9.0'设置的一样,不然无法导入。
pod 'CXThreeKuTwo', :path =>'/Users/daiweibao/Desktop/CXThreeKuTwo'
主工程配置好后,pod install 下主工程DWBChaoxiDemo就能正常导入了。
导入主工程项目结构如下:
DWBChaoxiDemo项目
导入完成后在项目里就可以像pod下来的AFN那样正常导入头文件使用啦。