前言
原文:
https://blog.csdn.net/z929118967/article/details/75213888
CocoaPods是iOS最常用的类库管理工具.使用它可解决了以下两个问题:
1、项目中的类库有更新,可避免手动下载新版本加入到项目。2、某个类库用到其他类库时,可避免手动管理这些依赖关系
- 语法
platform :ios, '9.0'
inhibit_all_warnings!
target 'xxx' do
# Uncomment the next line if you're using Swift or would like to use dynamic frameworks
# use_frameworks!
# Pods for ➜ retail git:(develop) ✗ cat ~/bin/knpod
#!/bin/sh
#该命令只安装新添加的库,已更新的库忽略
# pod install --verbose --no-repo-update
pod 'Masonry'
pod 'IQKeyboardManager'
end
I 基础应用
1.1 应用场景之一:利用CocoaPods,在项目中导入类库
- 1、先在项目中创建Podfile,Podfile的内容是你想导入的类库。一般类库的原作者会告诉你导入该类库应该如何写Podfile;
- 2、运行命令:`$ pod install.
1.1.1 在安装CocoaPods之前,首先要在本地安装好Ruby环境。
代码语言:javascript复制bogon:~ devzkn$ gem sources -l
*** CURRENT SOURCES ***
https://rubygems.org/
- 安装cocoapods
bogon:~ devzkn$ sudo gem install cocoapods
代码语言:javascript复制27 gems installed
- 判断AFNetworking 是否支持CocoaPods。
bogon:~ devzkn$ pod search AFNetworking
Setting up CocoaPods master repo
1.1.2 配置 Podfile 文件内容。
注意,Podfile文件应该和你的工程文件.xcodeproj在同一个目录下。
这里写图片描述
在终端中的当前项目目录下,运行以下命令:
$ pod install
1.1.3 安装第三方库之后,打开项目文件的方式
代码语言:javascript复制[!] Please close any current Xcode sessions and use `KNTestPod.xcworkspace` for this project from now on.
Sending stats
Pod installation complete! There is 1 dependency from the Podfile and 1 total pod installed.
bogon:KNTestPod devzkn$
注意最后一句话,意思是:以后打开项目就用 CocoaPodsDemo.xcworkspace 打开,而不是之前的.xcodeproj文件。
1.2 场景2:如何正确编译运行一个包含CocoPods类库的项目
在GitHub上找到一份代码符合自己想需求,你再仔细一看,会发现你下载的代码包含了Podfile。没错,这意味着你可以用CocoaPods很方便下载所需要的类库。
同时你会发现在UAAppReviewManagerExample文件夹下面有三个跟CocosPods相关的文件(文件夹):Podfile,Podfile.lock和Pods
1.2.1 $ pod update
- pod install只会按照Podfile的要求来请求类库,如果类库版本号有变化,那么将获取失败。
pod update,再用 $ pod install 就成功了。
1.3 使用例子:
代码语言:javascript复制# 下面两行是指明依赖库的来源地址
source 'https://github.com/CocoaPods/Specs.git'
source 'https://github.com/Artsy/Specs.git'
# 说明平台是ios,版本是9.0
platform :ios, '9.0'
# 忽略引入库的所有警告(强迫症者的福音啊)
inhibit_all_warnings!
# 针对MyApp target引入AFNetworking
# 针对MyAppTests target引入OCMock,
target 'MyApp' do
pod 'AFNetworking', '~> 3.0'
target 'MyAppTests' do
inherit! :search_paths
pod 'OCMock', '~> 2.0.1'
end
end
# 这个是cocoapods的一些配置,官网并没有太详细的说明,一般采取默认就好了,也就是不写.
post_install do |installer|
installer.pods_project.targets.each do |target|
puts target.name
end
end
- 例如:Specta 的导入
target :KNMVC2MVVMDemo2 do
# your app dependencies
target :KNMVC2MVVMDemo2Tests do
inherit! :search_paths
pod 'Specta', '~> 1.0'
# pod 'Expecta', '~> 1.0' # expecta matchers
# pod 'OCMock', '~> 2.2' # OCMock
# pod 'OCHamcrest', '~> 3.0' # hamcrest matchers
# pod 'OCMockito', '~> 1.0' # OCMock
# pod 'LRMocky', '~> 0.9' # LRMocky
end
end
1.3.1 忽略 CocoaPods 第三方库警告
- 忽略 CocoaPods 第三方库警告
https://kunnan.blog.csdn.net/article/details/77678850
- 忽略引入库的所有警告
# 忽略引入库的所有警告(强迫症者的福音啊)
inhibit_all_warnings!
- 忽略单个库的警告
pod 'Masonry', :inhibit_warnings => true
II、高级用法
2.1 podspec.json
https://github.com/CocoaPods/Specs/blob/master/Specs/7/8/5/OctoKit/0.5/OctoKit.podspec.json
代码语言:javascript复制 pod 'OctoKit', :podspec => 'KNMVVMReactiveCocoaDemo/0.5/OctoKit.podspec.json'
通过Podfile指定路径,然后pod update。
2.2 只安装新添加的库,已更新的库忽略
- 只安装新添加的库,已更新的库忽略
https://kunnan.blog.csdn.net/article/details/103830017
III、综合例子
3.1 tweak 集成CocoaAsyncSocket
- iOS逆向:tweak 集成CocoaAsyncSocket(建连、断开、重连、心跳、通用请求)