Unity集成Firebase构建iOS时Cocoapods安装失败,LANG配置重置问题
解决Unity iOS构建时Cocoapods UTF-8编码报错方案
问题根因
你之前执行的export LANG=en_US.UTF-8属于临时环境变量配置,仅对当前打开的终端窗口生效。Unity触发iOS构建时会启动独立的Shell会话,不会继承临时配置,且重启终端后配置也会自动重置,因此修改不生效。
可行解决方案
方案1:全局配置Shell环境变量(永久生效,推荐)
该方案会对所有Shell会话生效,后续所有终端操作、Unity构建都会复用该配置:
- 先确认当前使用的Shell类型,终端执行命令:
echo $SHELL - 若输出为
/bin/zsh(MacOS Catalina及之后版本默认Shell):- 终端执行
touch ~/.zshrc确保配置文件存在,再执行open ~/.zshrc打开文件 - 在文件末尾添加如下两行配置:
export LANG=en_US.UTF-8 export LC_ALL=en_US.UTF-8- 保存关闭文件后,终端执行
source ~/.zshrc使配置立即生效
- 终端执行
- 若输出为
/bin/bash:- 终端执行
touch ~/.bash_profile确保配置文件存在,再执行open ~/.bash_profile打开文件 - 同样在末尾添加上述两行export配置
- 保存关闭文件后,终端执行
source ~/.bash_profile使配置立即生效
- 终端执行
配置完成后关闭终端重新打开,执行locale命令验证,确认LANG和LC_ALL均显示为en_US.UTF-8后,重启Unity执行构建即可。
方案2:修改Unity构建脚本强制指定编码(无需修改系统配置)
如果你使用自定义C#构建脚本触发iOS构建,可以在调用Cocoapods相关逻辑前,通过代码设置进程内环境变量:
using System; // 在构建iOS包的逻辑前添加如下代码 Environment.SetEnvironmentVariable("LANG", "en_US.UTF-8"); Environment.SetEnvironmentVariable("LC_ALL", "en_US.UTF-8");
该配置仅在当前Unity构建进程内生效,不会修改系统全局配置。
方案3:单次构建临时生效
如果只是临时需要构建,不想修改任何配置,可以通过终端带环境变量启动Unity:
- 打开终端执行:
export LANG=en_US.UTF-8 && export LC_ALL=en_US.UTF-8 - 同一会话内执行命令启动Unity,替换为你的Unity安装路径和项目路径即可:
/Applications/Unity/Hub/Editor/你的Unity版本号/Unity.app/Contents/MacOS/Unity -projectPath /你的项目本地路径
通过该方式启动的Unity会继承当前终端的环境变量,构建时不会触发编码报错。
注意:建议同时配置LANG和LC_ALL两个变量,仅配置LANG可能因其他区域设置项为空触发Cocoapods的衍生报错。
内容的提问来源于stack exchange,提问作者Vincent Lauwen
相关产品推荐
相关产品推荐

