cocoapod 学习记录

cocoapod 学习记录

CocoaPods 是一个管理 iOS 和 Mac 应用程序依赖项的工具。它使用 Ruby 语言编写,提供了一个简单的方式来安装、管理和更新第三方库。本教程将帮助你快速了解 CocoaPods 的基本使用方法。

Tiny Demo

前置条件

在开始使用 CocoaPods 之前,你需要满足以下前置条件:

  • 确保已经安装了 Ruby 和 RubyGems, 实际上macos已经内置了它们。
  • 确保已经安装了 Xcode 开发工具;
  • 确保已经安装了 Git 版本控制系统。

安装 CocoaPods

在命令行中输入以下命令来安装 CocoaPods:

sudo gem install cocoapods

请注意,这个过程可能需要一段时间,具体时间取决于你的系统配置和网络状况。

创建一个新的 Xcode 项目

在使用 CocoaPods 之前,你需要先创建一个新的 Xcode 项目。在 Xcode 中,选择 File > New > Project,然后选择 iOS/Mac(因为我后面用到的是Poco C++库,它只支持ios,所以这里我选择了ios,后面语言选择Object-c,因为只有它才可以直接调用c++) 应用程序模板。

在项目中使用 CocoaPods

创建 Podfile

pod init

编辑 Podfile

打开 Podfile 文件,使用 Ruby 语言编写所需的第三方库依赖项。例如,如果要使用 Alamofire 库,Podfile 文件应如下所示:

# Uncomment the next line to define a global platform for your project
platform :ios, '9.0'

target 'first' do
  # Comment the next line if you don't want to use dynamic frameworks
  # use_frameworks!
  pod 'Poco-minimal'
  # Pods for first

end

在这个例子中,platform 表示你的项目是基于 iOS 平台开发的,最低版本为 iOS 9.0。use_frameworks! 表示你希望使用 Swift 框架来编写你的项目。target 表示项目的目标名称,pod 命令表示你希望使用 Poco-minimal 库。

在 Podfile 文件中添加完所有的依赖库之后,保存文件并退出编辑器。

安装依赖库

在终端中,进入项目目录,并执行以下命令来安装依赖库:

pod install

这个过程可能需要一段时间,具体时间取决于你的依赖库数量和网络状况。

如果安装成功,CocoaPods 会生成一个名为 Pods 的文件夹,包含所需的第三方库和其他必要的文件。

使用依赖库

在项目中使用 CocoaPods 安装的第三方库C++库,像使用任何一个库一样使用它。

#import <UIKit/UIKit.h>
#import "AppDelegate.h"

#include 

int main(int argc, char * argv[]) {
    NSString * appDelegateClassName;
    @autoreleasepool {
        // Setup code that might create autoreleased objects goes here.
        appDelegateClassName = NSStringFromClass([AppDelegate class]);
    }
    auto result = Poco::XML::toXMLString("123");
    return UIApplicationMain(argc, argv, nil, appDelegateClassName);
}

Command

pod install

添加到 CocoaPods 的源地址列表会在执行 pod install 命令时被用到。在 Podfile 文件中,可以通过 source 命令来指定所需要的仓库源。当你执行 pod install 命令时,CocoaPods 会根据 Podfile 中指定的仓库源地址去查找所需的第三方库,并将其安装到本地项目中。

如果 Podfile 文件中没有指定任何仓库源,CocoaPods 会默认使用官方的仓库源地址(https://github.com/CocoaPods/Specs.git)来查找所需的第三方库。

如果你添加了其他的仓库源地址,那么在执行 pod install 命令时,CocoaPods 会优先从你指定的仓库源地址中查找所需的第三方库。如果在指定的仓库源中找不到所需的第三方库,CocoaPods 会自动从默认的官方仓库源中查找。

因此,你可以添加其他的仓库源地址,以便查找一些在官方仓库源中不存在的第三方库。同时,你也可以使用 pod repo list 命令来查看已经添加到 CocoaPods 中的仓库源地址列表,以便管理和维护这些源地址

Q&A

如何知道pod lib是从哪个源安装的

Podfile.lock 文件中会有记录。

SPEC REPOS:
 trunk:
 - Poco-minimal

如上就表示,lib Poco-minimal 来自 repo source trunk。 repo source 可以通过

pod repo list

查看。

c-cache 和 binary cache 的区别?

c-cache 和 binary cache 都是 CocoaPods 中用于缓存依赖库的机制,但二者的缓存内容和作用略有不同。

c-cache 是 CocoaPods 的一个缓存机制,用于缓存 Pod 安装过程中的编译结果和其他产生的中间文件,以便在下次安装同一个版本的 Pod 时可以直接使用已有的编译结果,提高安装速度。c-cache 存储的内容是源代码的编译结果,因此它不是可执行二进制文件,也不适用于在不同的机器之间共享缓存。

binary cache 则是一个基于 CDN(Content Delivery Network,内容分发网络)的缓存服务,由 CocoaPods 提供商 AppCoda 维护。它缓存的是 Pod 的二进制文件,即编译后的可执行文件和库文件。binary cache 的作用是在安装 Pod 时,如果本地没有 c-cache 或者 c-cache 已经过期,会尝试从 binary cache 中获取预编译的二进制文件,以加快安装速度。binary cache 的缓存内容是可执行二进制文件,可以在不同的机器之间共享缓存,从而更好地提高依赖库的共享和复用。

综上,c-cache 和 binary cache 都可以用于缓存依赖库,但缓存的内容和作用略有不同。c-cache 主要用于缓存源代码的编译结果,用于加快本地安装速度;而 binary cache 主要用于缓存可执行的二进制文件,用于加速在不同机器之间的依赖库共享。

Refer

CocoaPods Guides - Getting Started

你可能感兴趣的:(MacOS,学习,xcode,ios)