CocoaPods:为Swift创建私有Pods

2018-05-16  本文已影响0人  Mob_Developer

之前使用OC时,鼓捣了一下CocoaPods的创建,翻译了一篇国外的文章,发布在了简书。但是一直没有把这个技术放在实际的开发中,也遗忘的差不多了。最近工作中强烈的感觉到模块化开发的重要性,所以打算把CocoaPods拾起来。之前翻译的文章中的方式跟现在已经大有不同。

研究了两天,制作了公共Pods和私有Pods,都验证成功。去掉了多余的步骤,精简为以下几步,方便以后查阅。

  1. 在Git托管平台上(github、码云、gitlab……)创建一个仓库,我这里在码云创建了https://gitee.com/mob_developer/MDBase.git

  2. 执行pod repo add MDBase https://gitee.com/mob_developer/MDBase.git命令,将私有仓库添加到CocoaPods中。再执行cd ~/.cocoapods/repos命令,就能在cocoapods的repos中看到MDBase了;

  3. 执行cd ~/.cocoapods/repos/MDBase命令到MDBase文件夹,执行pod spec create MDBase创建MDBase.podspec文件,这个文件是我们的私有库的配置文件

  4. 在MDBase中创建Pod文件夹,在Pod文件夹下分别创建Classes、 Assets文件夹。 Classes用来放私有Pod源码。Assets文件夹下放png资源文件

  5. 执行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
    
    
  6. 将私有库的代码文件放在Classes文件夹中

  7. 将MDBase同步到它的仓库上

  8. 打上标签,标签要与podspec文件中的s.version的值一致

  9. 终端执行pod lib lint,以检查配置文件是否正确

    PublicPodTests (0.1.0)
    - ERROR | [iOS] file patterns: The source_files pattern did not match any file.

    遇到上面的问题是因为,在POD/Classes文件夹下没有任何文件。此时我们把我们的库文件放进去。再次执行'pod lib lint',知道没有错误,终端给出以下信息,表示成功

    PublicPodTests passed validation.

  10. 回到MDBase文件夹下,执行pod repo push MDBase MDBase.podspec,等待执行成功,一个私有Pod就创建成功了

  11. 在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
    
  12. 最后pod install,工程中导入MDBase库,大功告成!

如果要创建公共Pods库,则在从10中要执行:
pod trunk register 邮箱 '名字' --description='描述',以注册仓库。之后所填的邮箱会受到一封验证邮件,点击链接,验证成功。之后执行pod trunk push MDBase.podspec命令,一个公共Pods就创建成功了。使用的方式就跟使用其他公共仓库的方式一样。

上一篇下一篇

猜你喜欢

热点阅读