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

Fastlane通过SSH执行失败(无法签名应用)

SSH远程执行Fastlane代码签名失败的解决方案

核心原因

SSH登录的Shell属于无GUI环境,缺少VNC登录时的钥匙串访问权限、完整环境变量,以及代码签名所需的交互授权。

具体解决步骤

1. 解锁登录钥匙串

SSH环境下默认钥匙串处于锁定状态,需提前解锁,在构建脚本开头添加以下命令:

security unlock-keychain -p "你的登录钥匙串密码" ~/Library/Keychains/login.keychain-db

注意:担心密码明文泄露的话,可通过环境变量传递,比如security unlock-keychain -p "$KEYCHAIN_PASSWORD",提前在SSH会话中导出该变量

2. 配置代码签名的钥匙串访问权限

授予codesign工具访问钥匙串的权限,执行:

security set-key-partition-list -S apple-tool:,apple: -s -k "你的登录钥匙串密码" ~/Library/Keychains/login.keychain-db

该命令允许Xcode、Fastlane等工具访问钥匙串内的签名证书。

3. 确保SSH会话继承完整环境变量

VNC登录的Shell包含完整的PATH及Xcode相关环境变量,SSH默认缺失。可在构建脚本开头导入用户zsh配置:

source ~/.zshrc

或直接导出Xcode命令行工具路径:

export PATH="/Applications/Xcode.app/Contents/Developer/usr/bin:$PATH"

4. 明确Fastlane签名配置

避免依赖本地GUI自动选择,在Fastfile中指定签名参数:

lane :build do
  gym(
    scheme: "Unity-iPhone",
    export_method: "app-store",
    signing_style: "manual",
    provisioning_profile_specifier: "你的描述文件名称",
    code_sign_identity: "iPhone Distribution: 你的开发者账号"
  )
end

5. 禁用代码签名交互提示

SSH环境无法弹出授权窗口,需关闭相关提示:

defaults write com.apple.security.authorization ignore-authorization-ui -bool YES

执行后重启SSH会话生效,构建完成后可改回NO恢复正常提示。


内容的提问来源于stack exchange,提问作者mcExchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 17:53:23