You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

M1芯片Mac上Xcode使用fastlane已设UTF-8仍报编码错误如何解决

M1芯片Mac下Xcode构建触发fastlane UTF-8编码报错问题

报错现象

在搭载M1芯片的Mac设备上,通过Xcode构建iOS应用或在模拟器中运行应用时,触发fastlane相关报错,报错信息如下:

WARNING: fastlane requires your locale to be set to UTF-8.
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/pathname.rb:43:in `match?': [!] invalid byte sequence in US-ASCII (ArgumentError)

排查过程

  • 定位到系统Ruby框架路径下的pathname.rb文件第43行,对应代码如下,未从代码本身定位到问题根源:
def chop_basename(path) # :nodoc:
base = File.basename(path)
if /\A#{SEPARATOR_PAT}?\z/o.match?(base)
  return nil
else
  return path[0, path.rindex(base)], base
end

end
  • 检查终端交互环境下的locale配置,所有配置项均已设置为en_US.UTF-8,但Xcode构建时仍然抛出相同错误,终端locale输出如下:
LANG="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_CTYPE="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_ALL="en_US.UTF-8"

问题根因

Xcode作为GUI应用启动时,不会继承终端Shell中配置的locale环境变量。终端里查到的UTF-8配置仅对终端交互会话生效,Xcode拉起的构建、模拟器运行流程默认读取系统GUI层的环境变量,未配置UTF-8时会回退到US-ASCII编码,fastlane运行时检测到编码不符合要求、处理路径时遇到非ASCII字节就会抛出参数错误,pathname.rb是系统Ruby的标准库文件,本身代码不存在问题。

解决方法

  • 方法1:给Xcode单独写入UTF-8环境变量
    完全退出Xcode,在终端执行以下命令,将编码配置写入Xcode的偏好设置:
    defaults write com.apple.dt.Xcode LANG en_US.UTF-8
    defaults write com.apple.dt.Xcode LC_ALL en_US.UTF-8
    
    执行完成后重启Xcode,重新触发构建即可。
  • 方法2:全局配置GUI应用层的编码环境变量
    如果设备上其他GUI开发工具也存在同类编码报错,执行以下命令给所有GUI应用注入UTF-8编码配置:
    launchctl setenv LANG en_US.UTF-8
    launchctl setenv LC_ALL en_US.UTF-8
    
    执行后重启Xcode等相关应用生效,该配置单次系统重启后会失效,需要永久生效可以将上述命令添加到对应Shell配置文件(zsh对应~/.zshrc,bash对应~/.bash_profile)中,配置登录时自动加载。
  • 方法3:在fastlane配置中强制指定编码
    打开项目目录下的fastlane/Fastfile文件,在文件最顶部添加两行配置,强制fastlane运行时使用UTF-8编码:
    ENV['LANG'] = 'en_US.UTF-8'
    ENV['LC_ALL'] = 'en_US.UTF-8'
    
    保存后重新触发构建即可,该方法不需要修改系统或Xcode配置,仅作用于当前项目的fastlane流程。

内容的提问来源于stack exchange,提问作者Xavier Duvan Melo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 10:45:33