mac 10.15.7 & Unity 2021.3.14 & XCode 12.4 -> Unity IOS 自动安装 Cocoapods 失败解决方法

这篇文章是针对Cocoapods失败的解决方法,但是编译出来的App是上架不了Appstore,如果想再看一下能上架到Appstore的方法,请看我的另一篇文章 mac 12.7.3 & Unity 2021.3.14 & XCode 14.2 成功将unity游戏编译到IPhone中,并上架appstore-CSDN博客

自己这两天在用Unity开发IOS时,遇到了安装Cocoapods失败的问题,记录一下问题及解决方法,便于自己后续查看,以及有相同遭遇的人查看

发生场景:打开 unity,触发自动安装 Cocoapods -> 安装失败(各种失败情况在【问题及解决】中都有记录及有解决方法)
原因分析:mac 10.15 自带的 ruby 为 2.6.3,这个版本太低,会导致安装 Cocoapods 出错,及后续 pod 会有问题,我们只需安装新的ruby版本即可
解决流程:安装 rvm -> 安装 ruby-2.7.2 & 启用 -> 安装 Cocoapods

具体解决步骤如下(如安装过程中遇到问题,请查看【问题及解决】):

1. 安装多ruby管理工具rvm
》curl -L https://get.rvm.io | bash -s stable
# 查看rvm已安装的版本
》rvm -v

2. 安装 ruby-2.7.2
》rvm install ruby-2.7.2
# 查看已安装的ruby
》rvm list
# 查看当前系统使用的ruby版本
》ruby -v
# 使用新的ruby版本(如果上面显示版本是旧的2.6的话,请运行下面,让其使用2.7.2)
》rvm use 2.7.2
3. 这一步可选做!打开 unity,触发自动安装 Cocoapods(显示 gem install cocoapods)-> 还是安装失败的话,直接看第4步(好像unity中gem认到的还是旧的,而不是我用rvm安装好ruby后新的gem)
4. 开始安装 Cocoapods(打开 终端 并手动运行安装 Cocoapods【我这里是安装成功了,然后,再打开unity,就不会再弹出安装 cocoapods 了,因为已经手动安装好了】)
》gem install cocoapods

# 安装完成,查看 cocoapods 版本

pod --version

5.  开始配置Cocoapods仓库,克隆Specs仓库并更新(可能你会奇怪,为什么还有这一步,第4步的时候,cocoapods 不是已经安装好了吗?但实际不是的,其实这个时候只是表面安装好,实际环境还是不行的,用unity 导出 xcode 是能导出了,但是导出后是缺少东西的【因为导出时会执行 pod install 安装库,但是装不成功,会导致缺少依赖库及.xcworkspace文件】,只有配置这一步后,导出才正常)

# 执行cd前,请先手动删除 ~/.cocoapods/repos 下的所有内容
》cd ~/.cocoapods/repos
》git clone --depth 1 https://github.com/CocoaPods/Specs.git master
》pod repo update

7. 完成!现在可以用 unity 导出 ios 了!这样,导出后就会有 .xcworkspace 工程文件和 .xcodeproj 文件,双击运行 .xcworkspace 文件,就可以去编译ios了!

运行前-重点注意
1. 运行时,一定不要用 iTerm 运行,请用 终端 运行,否则 rvm install ruby-2.7.2 这一步可能会安装失败
2. 安装时,会涉及安装第三方库会比较慢,请查看底下 『brew update 更新太慢』的解决方法,去提速,要不然安装会慢到你怀疑人生!


【问题及解决】

rvm 安装异常: 出现 curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refused
解决(设置hosts):
    步骤:查找IP -> 修改本地host -> 重装运行第一步curl
    1. 打开 https://site.ip138.com -> 查询 raw.githubusercontent.com 的ip,并记下来(会出现多个ip,我用的第一个出现的ip,ping虽然一般但能下载。用贵州的那个ip,ping虽然最快,但是下载有问题)
    2. 修改host(复制上面记下来的ip到hosts中)
    》sudo vim /etc/hosts
    182.43.124.6 raw.githubusercontent.com
    3. 重新执行安装
    》curl -L https://get.rvm.io | bash -s stable
    4. 检查是否安装完成
    》rvm -v

    说明:
        安装成功后,rvm会自动在 .bash_profile 中添加如下内容(如果想知道rvm装在哪里了,看这里就知道了)
        [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*

ruby-2.7.2 安装异常:出现 
    No binary rubies available for: osx/10.15/x86_64/ruby-2.7.2.
    Failed to update Homebrew, follow instructions at

        https://docs.brew.sh/Common-Issues

    and make sure `brew update` works before continuing.
    Error running 'requirements_osx_brew_update_system ruby-2.7.2',
    please read /Users/apple/.rvm/log/1706324534_ruby-2.7.2/update_system.log
    Requirements installation failed with status: 1.
解决1:brew update
解决2:如果【解决1】后,还是不行,请查看你是否使用了 iTerm,请换成 终端 后再重新运行 rvm install ruby-2.7.2

brew update 更新异常:出现
    fatal: unable to access 'https://github.com/shivammathur/homebrew-php/': Failed to connect to github.com port 443: Operation timed out
    Error: Fetching /usr/local/Homebrew/Library/Taps/shivammathur/homebrew-php failed!
    Installing from the API is now the default behaviour!
    You can save space and time by running:
      brew untap homebrew/core
      brew untap homebrew/cask
解决1:
    》sudo vim /etc/hosts
    140.82.114.4 github.com

解决2:

     如果解决1后还是不行,终级大招『重启电脑』,我其它时候有时也会碰到 github.com port 443: Operation timed out,咋弄都不行,最后,『重启电脑』后,就可以了!网上有说去掉代理啥的都是扯蛋,P用都没有!

brew update 更新太慢
解决:
    # 改变 brew 源(由默认的国外源,改为国内源)
    cd $(brew --repo)
    git remote set-url origin https://mirrors.ustc.edu.cn/brew.git

    # 改变 brew-core 源
    cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
    git remote set-url origin https://mirrors.ustc.edu.cn/homebrew-core.git

    # 完成换源之后,再执行更新指令一次(速度就很快了)
    brew update

Cocoapods 安装异常1:出现 fatal error: 'ruby/config.h' file not found
解决(ruby 加软链):
    》cd /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/include/ruby-2.6.0/ruby
    》sudo ln -sf ../../../../Headers/ruby/config.h

Cocoapods 安装异常2:出现 make: *** No rule to make target `/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/include/ruby-2.6.0/universal-darwin19/ruby/config.h', needed by `AbstractMemory.o'.  Stop.
解决(ruby 加软链):
    》cd /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/include/ruby-2.6.0
    》sudo ln -sf universal-darwin20 universal-darwin19

Cocoapods 安装异常3:出现 ERROR:  Error installing cocoapods:
    The last version of drb (>= 0) to support your Ruby & RubyGems was 2.0.6. Try installing it with `gem install drb -v 2.0.6` and then running the current command again
    drb requires Ruby version >= 2.7.0. The current ruby version is 2.6.3.62.
解决:
    安装 ruby-2.7.2 版本(请查看开头 2. 安装多ruby管理工具、新版ruby)

Cocoapods 安装异常4:出现 You don't have write permissions for the /Library/Ruby/Gems/2.6.0 directory.
出现:unity 打开时,自动弹出安装 cocoapods 时出现
解决:直接关闭 unity,改用打开系统 终端 直接运行命令 gem install cocoapods 就行了
原因:unity 打开时,他的 gem 命令好像用的还是旧的,会自动安装到/Library库中,不是我新装好的 gem,导致出错(怎么在unity中让gem运行时是新的,弄了一会没弄出来,算了,先不管了,终端能安装也行了)

Unity 编译导出IOS工程异常(能导出,但有异常信息):出现 

iOS framework addition failed due to a CocoaPods installation failure. This will will likely result in an non-functional Xcode project.

After the failure, "pod repo update" was executed and succeeded. "pod install" was then attempted again, and still failed. This may be due to a broken CocoaPods installation. See: https://guides.cocoapods.org/using/troubleshooting.html for potential solutions.

pod install output:

Analyzing dependencies
[!] Couldn't determine repo type for URL: `https://github.com/CocoaPods/Specs`: end of file reached

解决:请拉到最上面,看第5步 配置cocoapods仓库!


------ 其它 ------
Unity开发Ios部分流程:安装 XCode -> 进入Unity,自动安装Cocospods -> 导出XCode工程 -> XCode打开工程&真机测试 -> 上传appstore

说明:mac 10.15.7 + unity 开发ios,需要安装 XCode 12.4 及以下版本(更高的版本需要更高的系统)
XCode与Mac版本对应网址:https://xcodereleases.com/
XCode各大版本下载网址:https://developer.apple.com/download/all/?q=xcod