FrameworkiOS-SDKcocoaPods

【潮汐】iOS用Cocoapods管理本地(framework)

2022-02-27  本文已影响0人  爱恨的潮汐

用 Cocoapods 管理本地库

众所周知,我们在写SDK时,会考虑尽量避免使用第三方库,尽量给自己的类名或图片名起的特别一些,比如加"NS"前缀等,这些都是为了避免一个问题(冲突),但我们也会发现,Cocoapods引入得第三方库为什么不会冲突,这就是私有库的魅力,下面开始学习如何从零构建一个可以使用的本地私有库。

学习从创建主工程开始,到完美调用为止,执行一遍完整的流程。

1. 创建主项目Demo工程

首先,创建一个名为DWBChaoxiDemo的工程放在桌面上,并配置好Cocoapods管理三方库(如管理AFN),如图

主项目配置好Cocoapods

2. 开始创建本地私有库

接着我们打开终端,利用pods创建私有库,私有库名字为:CXThreeKu ,命令如下

pod lib create CXThreeKuTwo

不出意外,会出现如图所示的询问指令(初始化配置私有库),根据需要回答即可


image.png

按下回车,本地私有库就创建好啦,此时会自动弹出一个Example工程,名字为:CXThreeKuTwo,如图所示

本地私有库

可以在这里开发我们的SDK,当然,我们直接把framework等私有库链接到主工程,在主工程里开发。

电脑里找到私有库,把私有库项目拖到做面上来,私有库文件目录如下图所示:
文件目录

3. 将framework、bundle图片资源等导入到本地私有库里

3.0、在私有库目录CXThreeKuTwo里建立个文件夹FM将三方库放到文件夹里,如图

image.png

3.1、通过私有库项目打开:CXThreeKuTwo ==> Example ==> CXThreeKuTwo.xcworkspace 打开项目,找到CXThreeKuTwo.podspec进行配置。(如路径:FM/CXKeyBoard.framework')

image.png

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.png

4. 将本地私有库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那样正常导入头文件使用啦。

参考文章:https://www.jianshu.com/p/4f2399907e97

上一篇下一篇

猜你喜欢

热点阅读