如何隐藏使用最新版CocoaPods时出现的Ruby警告?
如何隐藏CocoaPods 1.9.1的过时警告?
我太懂这种执行pod install就被满屏警告刷屏的烦躁了!这些警告都是因为CocoaPods 1.9.1和Ruby 2.7+版本的API不兼容导致的,下面给你几个实用的解决办法:
方法一:临时忽略警告(单次生效)
执行pod install时带上Ruby的警告忽略参数,直接在命令前添加环境变量:
RUBYOPT="-W:no-deprecated -W:no-experimental" pod install
这个命令会告诉Ruby忽略过时API和实验性特性的警告,一次性解决你遇到的两类警告问题。
方法二:永久解决(升级CocoaPods)
最彻底的办法是升级到修复了这些兼容问题的CocoaPods版本,比如1.10.0及以上版本,执行以下命令升级:
gem install cocoapods
升级后这些过时API的警告就会彻底消失,因为新版本已经替换了Ruby 2.7不再支持的方法。
方法三:手动修改CocoaPods源码(不推荐)
如果你暂时不想升级,可以手动修改CocoaPods的源码文件来消除警告:
- 针对
URI.escape已过时警告:找到路径/usr/local/lib/ruby/gems/2.7.0/gems/cocoapods-core-1.9.1/lib/cocoapods-core/cdn_source.rb的第337行,把URI.escape替换为URI.encode_www_form_component - 针对关键字参数警告:找到路径
/usr/local/lib/ruby/gems/2.7.0/gems/cocoapods-1.9.1/lib/cocoapods/downloader/cache.rb的对应行,在调用方法时添加**关键字参数(比如第114行和第100行的调用处)
不过这个方法的缺点很明显,后续升级CocoaPods时修改会被覆盖,而且手动改源码容易出错,所以优先推荐前两种方法。
你遇到的警告示例:
Analyzing dependencies /usr/local/lib/ruby/gems/2.7.0/gems/cocoapods-core-1.9.1/lib/cocoapods-core/cdn_source.rb:337: 警告:URI.escape已过时 /usr/local/lib/ruby/gems/2.7.0/gems/cocoapods-core-1.9.1/lib/cocoapods-core/cdn_source.rb:337: 警告:URI.escape已过时 ... /usr/local/lib/ruby/gems/2.7.0/gems/cocoapods-1.9.1/lib/cocoapods/downloader/cache.rb:114: 警告:使用最后一个参数作为关键字参数已被弃用;建议在调用时添加** /usr/local/lib/ruby/gems/2.7.0/gems/cocoapods-1.9.1/lib/cocoapods/downloader/request.rb:61: 警告:被调用方法`slug`定义于此
内容的提问来源于stack exchange,提问作者Nik
相关产品推荐
相关产品推荐

