CocoaPods 使用经验小记

1、使用CocoaPods来管理第三方框架时,当执行 pod install / pod update后,可能会很慢,一直卡着不动,原因是当执行以上两个命令的时候会升级CocoaPods的spec仓库,加一个参数可以省略这一步,然后速度就会提升不少。加参数的命令如下:

pod install --verbose --no-repo-update
pod update --verbose --no-repo-update

2、使用CocoaPods时出现如下警告:
(1)Your Podfile has had smart quotessanitised. To avoid issues in the future, you should not use TextEdit forediting it. If you are not using TextEdit, you should turn off smart quotes inyour editor of choice.
原因分析:不要使用文本编辑去编辑Podfile,使用Xcode编辑,或者使用终端敲命令去编辑。

(2)The file “Pods.xcconfig” couldn’t be opened because there is no such file.
解决方案:pod update即可。

(3)有时直接执行 pod install 命令时,会发现类库导入不成功,并且终端出现如下提示:
Required version ( …… ) not found for …… Available versions: 3.1.0。
原因分析:Podfile文件过期,类库有升级,但是Podfile没有更改。

(4)pod install 和 pod update 的区别
<1>pod install 只会按照Podfile的要求来请求类库,如果类库版本号有变化,那么将获取失败。
<2> pod update会更新所有的类库,获取最新版本的类库。
<3> 根据个人需求,看是否需要更新类库,一般建议直接使用 pod update。

3、删除项目中已经配置的类库
(1)找到对应项目中的Podfile文件,假设已经添加了如下第三方库:

  pod ‘pop’, ‘~>1.0.9’
  pod ‘AFNetworking’, ‘~>3.1.0’
  pod ‘MBProgressHUD’, ‘~>0.9.2’
  pod 'SDWebImage', '~> 3.8.1'

现在想移除 AFNetworking 框架,只需要删除该Podfile文件中的 pod ‘AFNetworking’, ‘~>3.1.0’ 即可,删除后的Podfile文件如下:

  pod ‘pop’, ‘~>1.0.9’
  pod ‘MBProgressHUD’, ‘~>0.9.2’
  pod 'SDWebImage', '~> 3.8.1'

(2)打开终端,cd 到当前项目目录下,重新执行pod update / pod install命令即可从项目中移除 AFNetworking 框架。

4、怎样从项目中移除CocoaPods
(1)删除项目所在文件夹中的如下文件:

这里写图片描述

(2)同时删除项目所在文件夹中,后缀名为 .xcworkspace 的文件:

这里写图片描述

(3)使用Xcode打开后缀名为 .xcodeproj 的项目,删除如下文件:

这里写图片描述

(4)通过Xcode中的Build Phases选项,删除下图中的 Check Pods Manifest.lock、Embeded Pods Frameworks 和 Copy Pods Resources,然后重新 Build 该项目即可(此时已经将CocoaPods从项目中移除了):

这里写图片描述

5、Podfile.lock 文件的作用
(1)Podfile.lock文件的最大用处在于多人开发时,如果在Podfile文件中“没有指定Pods依赖库的版本“,如下:

  pod ‘SDWebImage’

此时默认会获取当前SDWebImage这个Pods依赖库的最新版本。

(2)此时当团队中的某个人执行完pod install命令后,生成的Podfile.lock文件就记录下了当时最新Pods依赖库的版本,这时团队中的其它人check下来这份包含Podfile.lock文件的工程以后,再去执行pod install命令时,获取下来的Pods依赖库的版本就和最开始用户获取到的版本一致。

(3)如果没有Podfile.lock文件,后续所有用户执行pod install命令都会获取最新版本的SDWebImage,这就有可能造成同一个团队使用的依赖库版本不一致, 这对团队协作来说是不合适的。

(4)此时,如果团队想使用当前最新版本的SDWebImage依赖库,有两种方案:
<1> 更改Podfile文件,使其指向最新版本的JSONKIT依赖库;
<2> 执行pod update命令;

(5)Podfile.lock文件对团队协作开发很重要,建议将它添加到版本管理中。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Protobuf是一种高效的序列化协议,可以用于数据交换和数据存储。它的主要优势是大小小,速度快,可扩展性强。下面是使用Protobuf的一些小记: 1. 定义消息格式 首先,需要定义消息格式,以便Protobuf可以将数据序列化和反序列化。消息格式定义在.proto文件中,使用protobuf语言编写。例如,下面是一个简单的消息格式定义: ``` syntax = "proto3"; message Person { string name = 1; int32 age = 2; } ``` 这个消息格式定义了一个名为Person的消息,包含两个字段:name和age。 2. 生成代码 一旦消息格式定义好,就可以使用Protobuf编译器生成代码。编译器将根据消息格式定义生成相应的代码,包括消息类、序列化和反序列化方法等。可以使用以下命令生成代码: ``` protoc --java_out=. message.proto ``` 这将生成一个名为message.pb.java的Java类,该类包含Person消息的定义以及相关方法。 3. 序列化和反序列化 一旦生成了代码,就可以使用Protobuf序列化和反序列化数据。例如,下面是一个示例代码,将一个Person对象序列化为字节数组,并将其反序列化为另一个Person对象: ``` Person person = Person.newBuilder() .setName("Alice") .setAge(25) .build(); byte[] bytes = person.toByteArray(); Person deserializedPerson = Person.parseFrom(bytes); ``` 这个示例代码创建了一个Person对象,将其序列化为字节数组,然后将其反序列化为另一个Person对象。在这个过程中,Protobuf使用生成的代码执行序列化和反序列化操作。 以上是使用Protobuf的一些基本步骤和注意事项,希望对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值