1. RuntimeError - [Xcodeproj] Unknown object version. 问题解决
今天使用 Pods 时突然报错了,如下:
还有问题解决方案:
原因:这是因为你的 Xcode 版本和 CocoaPods 的版本不匹配,你需要更新你的 CocoaPods
解决方法:终端输入命令 $ gem install cocoapods --pre
但是,运行需要权限:
这是因为要执行这些操作时必须有管理员的权限(比如更新软件),比如更新cocoapods时报错,只需要在命令前加上 sudo ,例如:sudo gem install cocoapods即可.sudo是获取管理员权限,现在按照步骤输入管理员密码即可.
OK,可以继续使用 CocoaPods 。
2. 新问题
问题继续,今天有遇到了上次的这个问题,但是通过上面的步骤还是不可以,遇到下面错误:
Could not find a valid gem 'cocoapods' (>= 0), here is why:
Unable to download data from https://gems.ruby-china.org/ - bad response Not Found 404 (https://gems.ruby-china.org/specs.4.8.gz)
很明显404找不到上面的网址,你复制到浏览器,它会提醒你改成了com结尾:
一、删除
sudo gem sources --remove https://gems.ruby-china.org/
sudo gem sources --remove 后为移除的镜像地址,先用 gem sources -l 查看一下电脑中使用的是哪个,然后再移除,如:
先查看再移除,http://ruby.taobao.org/ 这个已经是很老的了,这个电脑很久没更新了。
二、添加
sudo gem sources -a https://gems.ruby-china.com
三、检查
gem sources -l
如果是
*** CURRENT SOURCES ***
https://gems.ruby-china.com
代表成功,再执行
sudo gem install -n /usr/local/bin cocoapods
3. CocoaPods版本升级
有时更新代码,可能会出现,pods 版本过低的提示,如下:
这时候就需要更新 pod 版本啦
- 首先我们可以查看下当前的版本号命令如下:
pod --version
- 在升级之前查看当前安装的Ruby源地址:同上
gem source -l
- 移除旧的Ruby源,添加一个新的源
// 移除旧的源 命令: "gem sources --remove"
// 添加新的源 命令: "gem sources -a "
查看新的源是否添加成功,同2
开始安装,输入如下命令
sudo gem install cocoapods
如果报错使用:
sudo gem install -n /usr/local/bin cocoapods
但是有可能一直更新不了,还是老版本,如下:
一直是 1.5.3 的版本,
大胆的尝试了一下:
sudo gem install cocoapods --pre -n /usr/local/bin cocoapods
终于更新过来了!!!
这时候就可以正常的使用 pods 了
4. 安装了ruby 2.3.0之后cocoapods无法使用解决办法其实是更新 Xcode 的问题
今天使用 Cocoapods 突然报错了,无法使用,如下:
大眼一看,是命令行路径的问题 ,但是一时没想起来哪里的问题,在网上找了许多文章,各种尝试,都没能解决,还以为安装了ruby 2.3.4之后cocoapods就无法使用正常使用的问题,最后在曾经的小伙伴的帮助下解决了,重置一下 Xcode d的 设置 ,如下:
是因为前两天,Mac App Store 自动更新了 Xcode 10.1 重新安装导致 cocoapads 不能正常使用, 在 Xcode 的偏好设置里面:
我的是这个问题,这个地方更新 或 安装 Xcode 命令行Command Line Tools 的路径可能会出问题,其他导致的暂时就不知道了,用其他的办法解决。
5. 新问题:
今天更新安装 cocoapods 时,遇到了下面两个问题,导致无法使用:
- [!] Attempt to read non existent folder
/Users/gantanger/Desktop/赶趟巴士1.5.6(SVN)/GantangBusNew/Pods/MBProgressHUD
. - [!] The
GantangBus [Debug]
target overrides theOTHER_LDFLAGS
build setting defined in `Pods/Target Support Files/Pods-GantangBus/Pods-GantangBus.debug.xcconfig'. This can lead to problems with the CocoaPods installation
GantangBus [Debug]
目标覆盖Pods / Target Support Files / Pods-GantangBus / Pods-GantangBus.debug.xcconfig'中定义的
OTHER_LDFLAGS`构建设置。 这可能导致CocoaPods安装出现问题
如图:
解决方法:
第一个问题:
是因为路径中有中文,导致出错,重命名或新切换一个目录,所以 路径/ 文件夹 最后不要用中文。
第二个问题:
other linker flags 的问题, OTHER_LDFLAGS 先搜索一下,发现设置的是 -all_load ,清除。
6. pod install 安装报错
报错信息如下:
[!] Error installing MBProgressHUD
[!] /usr/bin/git clone https://github.com/matej/MBProgressHUD.git /var/folders/3v/1h13clnn58v_tt_nmw0ybk6m0000gn/T/d20200211-26046-1kgv06r --template= --single-branch --depth 1 --branch 1.1.0
Cloning into '/var/folders/3v/1h13clnn58v_tt_nmw0ybk6m0000gn/T/d20200211-26046-1kgv06r'...
error: RPC failed; curl 56 LibreSSL SSL_read: SSL_ERROR_SYSCALL, errno 54
fatal: the remote end hung up unexpectedly
总之是一直安装失败报错,pod 本地库也更新不了,
pod repo update
但是不停地尝试,把不能安装成功的库先注释掉,就成功了,说明CocoaPods环境是没有什么问题,网上有很多说的,重新安装pods、VPN影响什么的都试过了,无济于事,就用这样的笨办法试的。
然后再把安装失败的库,一个一个放开重新安装
破费周折,很少麻烦,没办法,到现在一直不明白到底是哪里出了问题,只能这样麻烦了。
2020-5-20 浪漫的情人节
另续 ——
鉴于上面的问题 ,总是安装失败,跟网络可能有关系 ,但是关系可能不大,以前更新安装很快的,现在可能是源安装更新比较麻烦,今天发现了,一个方法, 就是在 Podfile文件中小小的改动一下,可能就解决问题了,刚测试了没问题,很快,就是在开头加上:
如果不加的话,可能很难安装成功,如下
这些库下载到本地很费劲,什么连接错误的,这样就不用下载到本地了,直接从远程仓库拉取,这样就很容易成功了:
source 'https://github.com/CocoaPods/Specs.git'这个之前其实加过很多次了,感觉没用,加在和三方库一起了,更新也很不成功,可能是加的地方不对。
2020-5-21,刚看到郑恺和苗苗下午13:14掐点官宣结婚了,又吃了一大把X粮吃的饱饱的。
刚更新了一下文章,没想到立马就被打脸了,piapia的。其实上面的source无所谓,放哪里都一样。今天又遇到了安装不成功的问题,折磨了快一天,本来只是一个库安装不了最新版的,结果全删了,很多库都更新不了了,得不偿失,返过来还是用的老方法。
本来只是这一个问题 ,结果项目完全移除了 CocoaPods依赖。
全部移除 CocoaPods 后只能重新再安装了,但是没有那么顺利了,很多库都安装不了了,
没办法,只能照老办法一个一个注释安装了。
最后又回到了原点:
7. [!] Error installing "xxx第三方库名称"
参考这篇文章解决方法:
https://www.jianshu.com/p/c2e85f224c65
另附Mac os 11之后系统安装cocoapods
$ sudo gem install -n /usr/local/bin cocoapods
cocoapods master移除:
$ sudo rm -fr ~/.cocoapods/repos/master
替代pod setup:
$ git clone https://git.coding.net/CocoaPods/Specs.git ~/.cocoapods/repos/master
$ pod repo update
pod安装与否查询(1为安装成功,0为不成功)
$ pod repo list
清空全局缓存
sudo rm -fr ~/.cocoapods/repos/master/
$ sudo rm -fr Pods/
附:Podfile.lock 文件
最后一次更新Pods时,所有第三方框架的版本号
Pod常用指令区别:
$ pod install
如果Podfile.lock文件不存在,会根据Podfile文件安装第三方框架,并生成Podfile.lock文件
如果Podfile.lock文件存在,会根据Podfile.lock文件的版本号来安装第三方框架
$ pod update
根据Podfile文件安装第三方框架
将所有第三方框架更新到最新版本,并且创建一个Podfile.lock文件覆盖掉原文件
$ pod install/update --no-repo-update
安装框架前不会执行pod repo update,意味着不去检查服务器版本,直接使用本地缓存的框架版本
pod install
过程简述:
* 在通过`pod install`或`pod update`指令安装框架前,都会先执行`pod repo update`指令,将服务器最新的框架下载到本地,项目中是否安装最新版本的框架,取决于安装方式:`pod install(指定版本)`和`pod update(最新版本)`
* 在第一次执行`pod install`指令时,`podfile.lock`还不存在,会根据`podfile`中的说明来集成框架
如果指定框架版本号,安装指定版本,如果未指定,安装最新的,并自动生成`podfile.lock`文件
* 当以后再次执行`pod install`指令时,会根据`podfile.lock`中记录的框架版本号来安装框架.
即便服务器中有最新的版本,通过`pod install`指令也不会安装最新的第三方框架,只会根据`podfile.lock`中记录的版本来安装* ##### 项目中的运用
* 多人协同开发中,在设置忽略文件时,我们通常不会将`pods`文件夹每次都推送至服务器,这样会造成服务器资源浪费,通常会将`Pods`文件夹忽略掉 [忽略Pods文件夹](https://www.jianshu.com/p/7e92f409326c)
* 当需要从另外一台电脑上`clone`项目协作开发时,根据`podfile.lock`指定的框架版本号,通过`pod install`指令安装框架,这样可以保证每个人项目中的框架版本都是一致,不会引起冲突
注意:从CocoaPods 1.0开始,默认情况下pod install
不会发生pod repo update
。
pods 指定版本号
如:
platform:ios,'8.0'
target 'GantangBus' do
pod 'Socket.IO-Client-Swift','~>11.1.2'
pod 'SDWebImage','~>4.0.0'
pod 'MBProgressHUD','~>1.1.0'
use_frameworks!
end