CocoaPods使用

一、CocoaPods简介

CocoaPods是一款XCode工程的三方库包管理工具,只需要在对应的配置文件中引用需要使用的三方库,就可以使用对应的pod命令进行库的安装、更新等操作。

二、基本使用

1、安装CocoaPods

mac可以使用rubygem工具来安装CocoaPods

# Xcode 8 + 9
$ sudo gem install cocoapods

Mac El Capitan cocoapods系统中,由于苹果限制了部分文件的读写权限,需要使用rvm来更新到最新的ruby版本,才可以正常安装和更新CocoaPods

参看:El Capitan cocoapods 等gem命令不能正常使用

2、更新CocoaPods

可以直接覆盖安装:

[sudo] gem install cocoapods

也可安装pre-release版本

[sudo] gem install cocoapods --pre

3、使用CocoaPodsXCode工程管理三方库

在XCode工程目录下执行下面命令创建Podfile

pod init

Podfile中指定最低支持的版本:

platform :ios, '9.0'

Podfile中添加需要使用的三方库:

target 'MyApp' do
  pod 'AFNetworking', '~> 3.0'
  pod 'FBSDKCoreKit', '~> 4.9'
end

执行下面命令,生成XCode工程.xcworkspace文件:

pod install

打开MyApp.xcworkspace即可。

4、pod install vs. pod update

  • pod install
    1. 已经存在Podfile文件的情况下,使用pod install来安装新添加的三方库,
  • pod update
    1. 想要单独更新某个库时
      pod update [PODNAME]
      
    2. 想要更新所有库时
      pod update
      

三、创建Pod

1、使用Pod Lib Create创建Pod

使用以下命令创建私有库

pod lib create MyLibrary

根据提示选择以下操作:

  • Objective-C or Swift
  • Making a Demo Application
  • Choosing a Test Framework(Specta/Expecta or Kiwi)
  • View-based Testing
  • Prefixes for Objective-C

选择完成后,会自动创建MyApp.xcworkspace文件,并打开。

然后编辑podspec文件,完善相应信息。
示例:

Pod::Spec.new do |s|
  s.name             = "WTAlert"
  s.version          = "0.1.0"
  s.summary          = "You can use WTAlert show alert by class method." 
  s.description      = <<-DESC
You can use WTAlert show alert by class method. That is simple.
                       DESC

  s.homepage         = "https://github.com/wusuowei/WTAlert"
  # s.screenshots     = "www.example.com/screenshots_1", "www.example.com/screenshots_2"
  s.license          = 'MIT'
  s.author           = { "wentianen" => "1206860151@qq.com" }
  s.source           = { :git => "https://github.com/wusuowei/WTAlert.git", :tag => s.version.to_s }
  # s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'

  s.platform     = :ios, '7.0'
  s.requires_arc = true

  s.source_files = 'Pod/Classes/**/*'
  s.resource_bundles = {
    'WTAlert' => ['Pod/Assets/*.png']
  }

  s.public_header_files = 'Pod/Classes/**/*.h'
  # s.frameworks = 'UIKit', 'MapKit'
  # s.dependency 'AFNetworking', '~> 2.3'
end

2、开放为公开库

注册信息到公开库:

pod trunk register EMAIL [YOUR_NAME]

示例:

pod trunk register eloy@example.com 'Eloy Durán' --description='Personal Laptop'
pod trunk register eloy@example.com --description='Work Laptop'
pod trunk register eloy@example.com

可以使用下面命令来查看已注册的信息:

pod trunk me

使用下面命令将Pod库信息上传到官方公开库:

pod trunk push [NAME.podspec]

如果上传失败,可以使用下面指令查看podspec文件是否存在语法错误:

pod spec lint [NAME.podspec]
// or
pod lib lint

3、 生成私有库

  1. 创建私有 Spec Repo

    如果你需要使用自己的一些pods库的集合的话,建议你创建私有的spec repo,一个只有你们的这些库的使用者才能访问到的私有库。

    你不需要fork Cocoapods/Specs主repo,只需要确认你们的团队成员都可以正常访问就行,没有公开的必要。

  2. 添加你的私有Repo到你的CocoaPods

     $ pod repo add REPO_NAME SOURCE_URL
    

    注意:在你创建本地pods库的时候,需要检查你推送到源地址的权限。

    你可以使用下面两条指令去检查你的安装是否完成:

     $ cd ~/.cocoapods/repos/REPO_NAME
     $ pod repo lint .
    
  3. 添加你的Podspec到你的repo

    确认你打了适当的tag和version标记,然后执行:

     $ pod repo push REPO_NAME SPEC_NAME.podspec
    

执行这个命令的时候,会执行对.podspec文件的语法检查,请注意你的podspec文件配置细节部分。
你的repo的结构应该像下面一样:

	.
	├── Specs
	    └── [SPEC_NAME]
	        └── [VERSION]
	            └── [SPEC_NAME].podspec
  1. 在工程中使用私有repo

    私有repo的使用和官方库一样,也是基于Podfile的,你可以在你工程的Podfile文件中指定spec仓库源地址就可以了:

     source 'URL_TO_REPOSITORY'
    

四、CocoaPods私有库创建遇到的问题

私有库的创建这里不再赘述,在互联网上已经有许多博客你可以进行参考,当然你也可以查看官方文档

1.私有库的dependency找不到

假如你已经创建好私有库A,并想在私有库B中使用私有库A,在库B的.podspec文件中你需要制定依赖:

s.dependency 'pod projectName(A)', '~> version'

校验sepc可用性时,执行以下命令:

pod sepc lint 文件名.podspec

此时由于你当前工程B依赖的工程是私有库,于是会报错:

- ERROR | [iOS] unknown: Encountered an unknown error (Unable to find a specification for `XSLKeyChainCache (~> 0.1.0)` depended upon by `XSLOpenUDID`) during validation.

原因:

校验podspec文件时会到远程podspec库查找相关依赖,默认只会到官方specs库校验,此时需要指定远程specs库去校验。

解决:

  1. 指定pod spec文件校验地址

     pod sepc lint 文件名.podspec --sources='http://[privateLibName]/cocoaspecs.git,https://github.com/CocoaPods/Specs.git'
    
  2. 引用当前私有库的podFile中指定source为私有库地址

    source http://[privateLibName]/cocoaspecs.git'
    source 'https://github.com/CocoaPods/Specs.git'
    

2.将本地podspec推送到远程私有spec库时因为警告失败

当你想把本地.podspec文件推送到远程specs仓库时,你需要执行:

Pod repo push 本地spec库名 本地.podsepc文件

如果.podspec文件存在警告时不能成功push。

解决:

Pod repo push 本地spec库名 本地.podsepc文件 --allow-warnings

不过为了严谨,最好把产生的警告解决掉再推送到远程仓库,以免对你的同事造成困扰。

更多相关指令你都可以用–help查看:

pod repo push --help

五、参考

  1. https://github.com/CocoaPods/CocoaPods/issues/2543

  2. http://guides.cocoapods.org/making/private-cocoapods.html

  3. http://guides.cocoapods.org/syntax/podfile.html#source

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值