美文网首页
cocoapods制作公有库

cocoapods制作公有库

作者: pingxhcn | 来源:发表于2020-03-18 14:52 被阅读0次

1、先在终端搜索一下看看名字是不是冲突

pod search xxx

如果没有冲突,就在github新建项目,并 git clone 到本地。
2、在项目文件夹下创建 podspec 文件, 执行以下命令,建议名字与你pod 名字一样

屏幕快照 2020-03-18 下午2.31.10.png
pod spec create xxx

3、将要上传的文件放在与 podspec 同级的文件中。

屏幕快照 2020-03-18 下午2.34.32.png
4、用 Xcode 打开 .podspec 文件
#Pod::Spec.new do |s| 是它的语法, 就相当现在这个s 变量就是我们spec的对象,下面我们给它相关的属性赋值就可以.
Pod::Spec.new do |s|
  #required,就是你pod 的名字.
  spec.name = "XHBaseLibrary"
  #required,版本号, 这里要说一下是,因为我们正常用的 source 是:git => :tag的方式,所以每次更新新版本要打tag push to git , tag 的version 写在这里.
  spec.version = "0.0.1"
  #required,摘要应该简短,但内容丰富.
  spec.summary = "XHBaseLibrary info."
  #optional,官方是说可选, 但建议写上,(描述比摘要要长)注意是在<<-DESC  DESC之间写下.
  spec.description = <<-DESC
        You can write your description here.
                   DESC
  #required,Pod主页的URL,如果你的项目上传到gitHub,就是你项目的首地址.
  spec.homepage = "https://github.com/Pingxh/XHBaseLibrary"
  #optional,显示Pod的效果截图。 适用于面向UI的库。 CocoaPods建议使用gif格式.
  # spec.screenshots  = "www.example.com/screenshots_1.gif", "www.example.com/screenshots_2.gif"

  #required,Pod的许可证。我们当前在项目下创建的LICENSE现在派上用场了.注意名字一定是: LICENSE, 不用文件后缀的.它可以是txt文件名字为:LICENSE,不要后缀.
  spec.license = { :type => 'MIT', :file => 'LICENSE' }
  #required,pod维护的作者,前面是名字,后面是email.
  spec.author = { "风筝" => "13286953452@126.com" }
  #required,lib的位置,如果放在gitHub,就是gitHub项目下的地址,写上tag的版本, 新版本这样写:spec.version.to_s
  spec.source = { :git => "https://github.com/Pingxh/XHBaseLibrary.git", :tag => "#{spec.version}" }
  #写下你代码的位置, 也可以在后面指定.{h,m,swift},如果多个逗号隔开,swift提供对外的class与method建议加上public
  spec.source_files = 'testOrderPlaceSDK/Classes/**/*'
  #排除的文件.
  #spec.exclude_files = "Classes/Exclude"

  # 指定公开的.h 文件,如果不指定,那source_files中所有头文件都是public的.
  #spec.public_header_files = "Classes/**/*.h"

  #本地 framework
  spec.ios.vendored_frameworks = 'testOrderPlaceSDK/frameworks/AlipaySDK.framework','testOrderPlaceSDK/frameworks/OrderPlaceSDK.framework'
  #本地 a library
  #spec.ios.vendored_library = 'Libraries/libProj4.a'
  
  #导入 resource 的多种方式
  spec.resources = ['XHBaseLibrary/Assets/AlipaySDK.bundle', 'XHBaseLibrary/Assets/*.png']
  spec.resource_bundles = {
'XHBaseLibrary' => ['XHBaseLibrary/Assets/**/*.{storyboard,xib}']
}
  #下载后不应删除的任何文件,比如某个txt
  #spec.preserve_path = 'IMPORTANT.txt'
  #spec.preserve_paths = 'Frameworks/*.framework'

  #optional,如果code中用到swift,必须指定swift版本,如果用的是OC可以不用写.
  spec.swift_version = '4.0'

  #optional,指定支持的cocoapods版本.
  #spec.cocoapods_version = '>= 0.36'

  #optional,如果指定 use_frameworks! ,则pod应包含静态库框架.
  spec.static_framework = true
  #required,指定ios版本,这个相当重要,如果 profile文件中: platform :ios, "8.0",选择的版本是8.0.但我这个pod的spec.ios.deployment_target 是9.0,那这个就不会安装到ios 8.0上.对后面更新pod lib很有用.
  spec.ios.deployment_target = "8.0"
  #系统 frameworks
  spec.frameworks = 'CoreTelephony', 'SystemConfiguration', 'QuartzCore', 'CoreText', 'CoreGraphics', 'UIKit', 'Foundation', 'CFNetwork', 'CoreMotion'
  #系统 a libraries
  spec.libraries = 'z', 'c++'

  #依赖的其他pod
  #spec.dependency 'AFNetworking', '~> 1.0'
  #spec.dependency 'RestKit/CoreData', '~> 0.20.0'   // 使用到其他subspecs
  #spec.ios.dependency 'MBProgressHUD', '~> 0.5'
  
  #requires_arc允许您指定哪个source_files使用ARC.这可以支持ARC的文件,true表示所有source_files都使用ARC.
  #不使用ARC的文件会有-fno-objc-arc编译器标志.
  #此属性的默认值为true.
  # spec.requires_arc = true


  #对subspec做个说明, 一般用到这种情况的不多, subspec类似p:NSOjbect ,而p可以说是subspec,它基于NSOjbect,我们一半用到subspec模式时会指定一个'Core'
  #它包括基本的东西,而subspec是它的另一个子类~~可以这么理解吧
  #下面看使用和配置
  # 使用 subspec order : pod 'XHBaseLibrary/Order'
  # 使用 core : pod 'XHBaseLibrary/Core'
  # spec.default_subspec   = 'Core'
  # spec.subspec "Core" do |core|
  # core.source_files = 'sources/extensions/ANAlipayResultCode.h'
  # core.resources    = 'AlipaySDK.bundle'
  # core.vendored_frameworks = 'AlipaySDK.framework'
  # core.public_header_files = 'AlipaySDK.framework/Headers/**/*.h', 'sources/extensions/ANAlipayResultCode.h'
  # end

  # spec.subspec "Order" do |order|
  # order.source_files = 'sources/order/**/*.{h,m}'
  # 注意要dependency core 
  # order.dependency 'AlipaySDK-2.0/Core'  
  # end
end

4、接下来我们验证下本地pod 有没效

*参数 --allow-warnings 是允许警告

pod lib lint XHBaseLibrary.podspec --allow-warnings
  • 下面我们先把代码推送到gitHub
  • 打上tag git tag '0.0.1', 注意tag 要版本号要与你在podspec 中所写的version 一致
  • 再将tag 也push到github git push --tags
    5、执行下面指令验证本地库与远程库有没效,如果看到 ** xxxx.podspec passed validation.** 就是通过了.看需要是否要添加(--allow-warnings)
pod spec lint XHBaseLibrary.podspec

6、push 到pod spec repo master

pod trunk push XHBaseLibrary.podspec

7、看到如下显示,说明就成功了


屏幕快照 2020-03-18 下午2.49.24.png
  • 可以试试 pod search xxx , 如果报: [!] Unable to find a pod with name, author, summary, or description matching xxxx,请打开: /Users/用户名/Library/Caches/CocoaPods ,需要把search_index.json 删除再重新pod search , 它会重新创建检索索引, 这个过程有点长.
  • 记录几个常用路径
  • pod 命令安装路径: /usr/local/bin
  • pod 框架索引信息缓存路径: /Users/用户名/.cocoapods/repos/master
  • 索引缓存路径: ~/Library/Caches/CocoaPods/

可能出现的错误

  • 如果提交成功,可以在 pod search xxxx 中搜索到,但是在项目中使用时,出现职下错误:
[!] CocoaPods could not find compatible versions for pod "XHBaseLibrary":
  In Podfile:
    XHBaseLibrary

Specs satisfying the `XHBaseLibrary` dependency were found, but they required a higher minimum deployment target.

要查看一下 .podspec 中的 platform :ios, 'xx' 与项目中的 Podfile 文件的 platform : ios, 'xx',版本数字是否相同,把 Podfile 中的 platform: ios, 'xx' 修改为一样就可以解决了。

相关文章

  • CocoaPods私有库制作

    前言 在前面的章节中有介绍过CocoaPods的使用: 制作CocoaPods公有库以及私有库的区别[https:...

  • cocoapods制作公有库

    1、新建仓库: 登录github,新建一个仓库(Repository): 2、clone仓库到本地: 1、 cop...

  • cocoaPods制作公有库

    一、登录github,创建新的远程库(存放代码) 二、创建本地代码库 终端输入pod lib create 库名称...

  • cocoapods制作公有库

    1、先在终端搜索一下看看名字是不是冲突 如果没有冲突,就在github新建项目,并 git clone 到本地。2...

  • CocoaPods进阶:制作公有库

    一、 前言 在CocoaPods进阶:详解私有库制作这篇博客中,讲解记录了cocoapods使用pod lib c...

  • 检测私有库报错 [iOS] unknown: Encounte

    问题描述项目模块化时,我们制作的私有库免不了依赖其他私有库和CocoaPods的公有库。在产品更新迭代制作新版本的...

  • CocoaPods 公有库, 私有库的创建

    CocoaPods 公有库, 私有库的创建 * 公有库 创建远程公有库,我们是用trunk的方式 1.1: 注册C...

  • 实践CocoaPods库的制作

    本篇内容基于 CocoaPods V1.6.0 实践公有库及私有库的制作 前言 作为一名iOSer,我们知道Coc...

  • pod私有库

    接着上两篇文章CocoaPods公有库和CocoaPods本地私有库,这篇就来讲解下CocoaPods远程私有库,...

  • 制作Pod库

    目录 一、公有Pod库制作 二、私有Pod库制作 三、subspec子库的制作 四、遇到的坑 一、公有Pod库制作...

网友评论

      本文标题:cocoapods制作公有库

      本文链接:https://www.haomeiwen.com/subject/piiqyhtx.html