1

iOS包依赖管理工具(一):CocoaPods了解篇

 2 years ago
source link: https://juejin.cn/post/6932739864613879821
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

iOS包依赖管理工具系列

iOS包依赖管理工具(一):CocoaPods了解篇

iOS包依赖管理工具(二):CocoaPods原理和知识

iOS包依赖管理工具(三):创建自己的 Pod 库

iOS包依赖管理工具(四):Swift Package Manager(SPM)了解篇

iOS包依赖管理工具(五):Swift Package Manager(SPM)自定义篇

iOS包依赖管理工具(六):CocoaPods VS SPM 总结篇

1.1、CocoaPods是什么?

它是一个专为Xcode工程(项目)所需第三方包的一个包依赖管理工具!类似于Java的Maven、Android的JCenter、Node的npm、yarn,工作职责都是一样。

1.2、一定需要这个工具么?

理论上并不是必需的,但实际上却是必需的!特别是苹果开发者(因为都涉及到Xcode来开发)。

1.3、手动引入第三方开源库的步骤

  1. 将开源库源码复制到项目中;
  2. 添加依赖框架和动态库;
  3. 手动配置(编译阶段、连接器选项),设置ARC环境下的-ObjC,-fno-objc-arc等参数;
  4. 管理该库的版本更新;
  5. 若该库还涉及到其它第三方,请重复以上步骤;

1.4、CocoaPods的目的

CocoaPods旨在改善第三方开源Cocoa库的参与度和可发现性,这些项目目标影响并推动了CocoaPods的设计:

  • 创建和共享库,并在项目中使用它们,而无需为库作者创建额外的工作;
  • 集成非CocoaPods库,并使用简单的透明Podspec标准在任何CocoaPods库的自己的分支上进行破解;
  • 允许库作者按自己的喜好构建库;
  • 通过自动执行许多与其库功能无关的Xcode工作,为库作者节省时间;
  • 支持任何源代码管理工具(目前支持的是git, svn,mercurial,bazaar,和各类可通过HTTP下载);
  • 促进在Pod上进行分布式协作的文化,但也提供只有通过集中式解决方案才能培养社区的功能;
  • 在核心Cocoa开发系统之上构建工具,包括通常部署到其他操作系统(例如Web服务)的工具;
  • 提供有目的且自动的集成,但使其完全可选,您可以根据需要将CocoaPods依赖项手动集成到Xcode项目中,无论有无工作区;
  • 为Cocoa和Xcode开发人员解决日常问题;

1.5、CocoaPods给我们带来的好处

  • 该工具是开源的,在GitHub上可查;
  • 通过CocoaPods配置文件,可方便引入所需第三方开源库;
  • 第三方库版本管理简单,升级容易;
  • 方便查找第三方库(官网 or 命令行);
  • 一般的项目都是团队合作,团队成员只需安装该工具就能完成第三方库引入(无需每人都做1.3中的步骤);
  • 制作公共库,并发布至CocoaPods上,其他人可方便使用;

二、CocoaPods安装

CocoaPods是由Ruby开发的,因此,在macOS上安装需要安装Ruby。

在正式安装以下工具时,建议先保证 xcode、xcode-select 都安装OK!

  • xcode 可以通过 App Store来更新;
  • xcode-select 可以通过命令行来执行: $ xcode-select --install

2.1、HomeBrew

Homebrew是一款Mac OS平台下的软件包管理工具,拥有安装、卸载、更新、查看、搜索等很多实用的功能。简单的一条指令,就可以实现包管理,而不用你关心各种依赖和文件路径的情况,十分方便快捷。所以我们需要下载Homebrew来安装Ruby。

  • 安装HomeBrew
$ /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
复制代码
  • 卸载HomeBrew
$ cd `brew --prefix`
$ rm -rf Cellar
$ brew prune
$ rm `git ls-files`
$ rm -r Library/Homebrew Library/Aliases Library/Formula Library/Contributions
$ rm -rf .git
$ rm -rf ~/Library/Caches/Homebrew
复制代码
  • HomeBrew使用

查看Homebrew命令:brew help

安装任意包:brew install // eg:brew install node

卸载任意包:brew uninstall // eg:brew uninstall git

查询可用包:brew search

查询已安装包列表:brew list

查看任意包信息:brew info

更新Homebrew:brew update

Homebrew帮助信息:brew -h

查看brew版本:brew -v

更新brew版本:brew update

整理重复语句:open ~/.zshrc -e、open ~/.bash_profile -e

2.2、安装Ruby

macOS都自带Ruby,不过版本可能比较低。

$ sudo brew install ruby // 强烈建议升级ruby至最新
复制代码

安装完成后,系统中就有了RubyGems这个东东,它是Ruby的高级包管理器(Sophisticated Package Manager)。Ruby还有另一个工具:RVM(Ruby Version Manager)。

// 查看Ruby源
$ gem source -l
*** CURRENT SOURCES ***
https://rubygems.org/

// 移除现有源
$ gem source --remove https://rubygems.org/

// 添加新源(国内Ruby镜像)
$ gem source -a https://gems.ruby-china.com/
复制代码

2.3、安装CocoaPods

$ sudo gem install cocoapods
(
    如果报错 =====> 
    ERROR:  While executing gem ... (Gem::FilePermissionError)
        You don't have write permissions for the /usr/bin directory.

    改用如下命令:
    sudo gem install -n /usr/local/bin cocoapods
)

// 安装成功后,还需执行一条命令才大功告成
$ pod setup

// 有时 cocoapods 安装也会有问题
~/.cocoapods/repos 可能没有生成,所以我们只能手动:
$ mkdir -p ~/.cocoapods/repos
$ cd ~/.cocoapods/repos
$ git clone https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git
$ pod setup
复制代码

三、创建Pod项目

3.1、查找第三方包“AFNetworking”

$ pod search AFNetworking

-> AFNetworking (4.0.1)
   A delightful networking framework for Apple platforms.
   pod 'AFNetworking', '~> 4.0.1'
   - Homepage: https://github.com/AFNetworking/AFNetworking
   - Source:   https://github.com/AFNetworking/AFNetworking.git
   - Versions: 4.0.1, 4.0.0, 3.2.1, 3.2.0, 3.1.0, 3.0.4, 3.0.3, 3.0.2, 3.0.1, 3.0.0, 3.0.0-beta.3, 3.0.0-beta.2, 
    3.0.0-beta.1, 2.7.0, 2.6.3,2.6.2, 2.6.1, 2.6.0, 2.5.4, 2.5.3, 2.5.2, 2.5.1, 2.5.0, 2.4.1, 2.4.0, 2.3.1, 2.3.0, 
   2.2.4, 2.2.3, 2.2.2, 2.2.1, 2.2.0, 2.1.0, 2.0.3,2.0.2, 2.0.1, 2.0.0, 2.0.0-RC3, 2.0.0-RC2, 2.0.0-RC1, 1.3.4, 
   1.3.3, 1.3.2, 1.3.1, 1.3.0, 1.2.1, 1.2.0, 1.1.0, 1.0.1, 1.0, 1.0RC3, 1.0RC2,1.0RC1, 0.10.1, 0.10.0, 0.9.2, 0.9.1, 
   0.9.0, 0.7.0, 0.5.1 [trunk repo]
   - Subspecs:
     - AFNetworking/Serialization (4.0.1)
     - AFNetworking/Security (4.0.1)
     - AFNetworking/Reachability (4.0.1)
     - AFNetworking/NSURLSession (4.0.1)
     - AFNetworking/UIKit (4.0.1)
     
-> 其它版本

:
// control + z 退出即可
复制代码

3.2、创建工程及Pod文件

// Xcode 创建工程 demo
// 在demo根目录下创建 Pod 文件
$ touch Podfile
复制代码

3.3、配置第三方库(Podfile)

# Define a global platform for your project
platform :ios, '9.0'

# 官方仓库地址
source 'https://github.com/CocoaPods/Specs.git'

target 'demo' do
     # 开头4个空格
     # 可以指定版本号 pod 'AFNetworking', '~> 4.0.1'
    # 不指定版本号默认使用最新版本
    pod 'AFNetworking'
end
复制代码

3.4、安装第三方库

查看安装前目录结构

$ ls -l
total 8
-rw-r--r--  1 chris  staff  312 12  7 16:04 Podfile
drwxr-xr-x  9 chris  staff  288 12  7 16:08 demo
drwxr-xr-x@ 5 chris  staff  160 12  7 16:08 demo.xcodeproj
复制代码
  • 安装第三方依赖包
$ pod install
Analyzing dependencies
Downloading dependencies
Installing AFNetworking (4.0.0)
Generating Pods project
Integrating client project

 [!] Please close any current Xcode sessions and use `demo.xcworkspace` for this 
 project from now on. Pod installation complete! There is 1 dependency from the 
Podfile and 1 total pod installed.
复制代码
  • 查看安装后目录结构
$ ls -l
total 16
-rw-r--r--  1 chris  staff  312 12  7 16:04 Podfile
-rw-r--r--  1 chris  staff  798 12  7 16:11 Podfile.lock
drwxr-xr-x  8 chris  staff  256 12  7 16:11 Pods
drwxr-xr-x  9 chris  staff  288 12  7 16:08 demo
drwxr-xr-x@ 5 chris  staff  160 12  7 16:11 demo.xcodeproj
drwxr-xr-x  3 chris  staff   96 12  7 16:11 demo.xcworkspace
复制代码
  • 双击“demo.xcworkspace”,就能看到Pod管理的工程

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK