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 文件应如下所示:
platform :ios, '9.0'target 'first' dopod 'Poco-minimal'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;&#64;autoreleasepool {appDelegateClassName &#61; NSStringFromClass([AppDelegate class]);}auto result &#61; Poco::XML::toXMLString("123");return UIApplicationMain(argc, argv, nil, appDelegateClassName);
}
Command
pod install
添加到 CocoaPods 的源地址列表会在执行 pod install
命令时被用到。在 Podfile 文件中&#xff0c;可以通过 source
命令来指定所需要的仓库源。当你执行 pod install
命令时&#xff0c;CocoaPods 会根据 Podfile 中指定的仓库源地址去查找所需的第三方库&#xff0c;并将其安装到本地项目中。
如果 Podfile 文件中没有指定任何仓库源&#xff0c;CocoaPods 会默认使用官方的仓库源地址&#xff08;https://github.com/CocoaPods/Specs.git&#xff09;来查找所需的第三方库。
如果你添加了其他的仓库源地址&#xff0c;那么在执行 pod install
命令时&#xff0c;CocoaPods 会优先从你指定的仓库源地址中查找所需的第三方库。如果在指定的仓库源中找不到所需的第三方库&#xff0c;CocoaPods 会自动从默认的官方仓库源中查找。
因此&#xff0c;你可以添加其他的仓库源地址&#xff0c;以便查找一些在官方仓库源中不存在的第三方库。同时&#xff0c;你也可以使用 pod repo list
命令来查看已经添加到 CocoaPods 中的仓库源地址列表&#xff0c;以便管理和维护这些源地址
Q&A
如何知道pod lib是从哪个源安装的
Podfile.lock 文件中会有记录。
SPEC REPOS:trunk:- Poco-minimal
如上就表示&#xff0c;lib Poco-minimal 来自 repo source trunk。 repo source 可以通过
pod repo list
查看。
c-cache 和 binary cache 的区别&#xff1f;
c-cache 和 binary cache 都是 CocoaPods 中用于缓存依赖库的机制&#xff0c;但二者的缓存内容和作用略有不同。
c-cache 是 CocoaPods 的一个缓存机制&#xff0c;用于缓存 Pod 安装过程中的编译结果和其他产生的中间文件&#xff0c;以便在下次安装同一个版本的 Pod 时可以直接使用已有的编译结果&#xff0c;提高安装速度。c-cache 存储的内容是源代码的编译结果&#xff0c;因此它不是可执行二进制文件&#xff0c;也不适用于在不同的机器之间共享缓存。
binary cache 则是一个基于 CDN&#xff08;Content Delivery Network&#xff0c;内容分发网络&#xff09;的缓存服务&#xff0c;由 CocoaPods 提供商 AppCoda 维护。它缓存的是 Pod 的二进制文件&#xff0c;即编译后的可执行文件和库文件。binary cache 的作用是在安装 Pod 时&#xff0c;如果本地没有 c-cache 或者 c-cache 已经过期&#xff0c;会尝试从 binary cache 中获取预编译的二进制文件&#xff0c;以加快安装速度。binary cache 的缓存内容是可执行二进制文件&#xff0c;可以在不同的机器之间共享缓存&#xff0c;从而更好地提高依赖库的共享和复用。
综上&#xff0c;c-cache 和 binary cache 都可以用于缓存依赖库&#xff0c;但缓存的内容和作用略有不同。c-cache 主要用于缓存源代码的编译结果&#xff0c;用于加快本地安装速度&#xff1b;而 binary cache 主要用于缓存可执行的二进制文件&#xff0c;用于加速在不同机器之间的依赖库共享。
Refer
CocoaPods Guides - Getting Started