[Cocoapods] 早就有CDN了,还在用镜像?

12,797

场景

为了提供pod install的速度,常规操作都会切换到国内的镜像

$ cd ~/.cocoapods/repos 
$ pod repo remove master
$ git clone https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git master

官方难道看不到吗?速度这是刚需😂

CDN

1.7.2开始,已经完全切到CDN上了。(我对CDN不熟,总之就是提速了,比之前快了,不用换镜像了) 1.8以上甚至把CDN作为默认源

使用,在Podfile最上面添加即可

source 'https://cdn.cocoapods.org/'

实际体验,确实快了不少

project_name Podfile DSL

install! 'cocoapods', :generate_multiple_pod_projects => true

target 'MyApp' do
  use_frameworks!

  pod 'Moya', :project_name => 'Networking'
  pod 'Alamofire', :project_name => 'Networking'
  pod 'Result', :project_name => 'Networking'

  target 'MyAppTests' do
    inherit! :search_paths
    pod 'OCMock', :project_name => 'Testing'
  end
end

官方教程写得很详细了, 我只取了目前对我有用的两点

1.install! 'cocoapods', :generate_multiple_pod_projects => true

改变了库的依赖方式,之前是以Targets方式依赖

使用了这个功能后,全部改变成项目的形式依赖了

据说这样做可以提高解析速度,这位老哥分享的

2.分组project_name

这个是为了增强第一个出的新功能,改变依赖的同时,分组。使某些相同功能的库能分在同一个项目下面。

  pod 'Moya', :project_name => 'Networking'
  pod 'Alamofire', :project_name => 'Networking'
  pod 'Result', :project_name => 'Networking'

内部依赖库不能分组?

如果某一个库内部依赖了其他库,是不能分组到目的项目中的。不过问题也不是很大,如果真的较真,非要把它分出来。可以把内部依赖库再pod指向一下。

YYWebImage为例子,内部依赖了YYCacheYYImage

  pod 'YYWebImage', :project_name => 'Image'

如果只设置了YYWebImageImage项目中去,那么YYCacheYYImage就会跑到外面去,不够完美😂,可以把内部依赖也指向一下

  pod 'YYWebImage', :project_name => 'Image'
  pod 'YYCache', :project_name => 'Image'
  pod 'YYImage', :project_name => 'Image'

这样所有的都放在一个项目中了🎉

2019.11.19 更新

好像部分老哥也没有体验到快了,那么速度是否真的比镜像快,可能要打上问好❓ 不过唯一的好处就是官方支持,不会担心哪天不维护了。

然后我看到部分老哥评论说失败的情况,我重新写了个demo试了下,确实会出现莫名的失败

比如我安装到Masonry时就失败了,😂,不知道是不是网络问题。然后再次pod install又好了。

[!] Error installing Masonry
[!] /usr/bin/git clone https://github.com/cloudkite/Masonry.git /var/folders/n6/_ynn7k9j6y383r7q5wnkjgl80000gn/T/d20191119-8908-dfsdoo --template= --single-branch --depth 1 --branch v1.1.0

Cloning into '/var/folders/n6/_ynn7k9j6y383r7q5wnkjgl80000gn/T/d20191119-8908-dfsdoo'...
fatal: unable to access 'https://github.com/cloudkite/Masonry.git/': Operation timed out after 300012 milliseconds with 0 out of 0 bytes received

感谢

开启 Cocoapods 新选项,加快项目索引速度

CocoaPods 1.8 Beta is Here!