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

如何在xcodebuild中替换codesign二进制文件解决时间戳服务不可用问题

解决xcodebuild替换codesign二进制的问题

首先,官方支持的最可靠方法是利用Xcode的CODE_SIGN_EXECUTABLE构建参数,直接指定你要使用的自定义codesign路径,不需要修改项目结构或单独签名:

  • 在xcodebuild命令中直接追加参数:
    xcodebuild -project YourProject.xcodeproj -scheme YourReleaseScheme CODE_SIGN_EXECUTABLE=/path/to/your/custom/codesign
    
    这个参数会强制xcodebuild使用你指定的二进制文件进行签名,完全绕过系统默认的/usr/bin/codesign。

如果你的项目使用xcworkspace,只需要把-project换成-workspace即可:

xcodebuild -workspace YourProject.xcworkspace -scheme YourReleaseScheme CODE_SIGN_EXECUTABLE=/path/to/your/custom/codesign

额外优化:针对timestamp错误的临时方案

既然你的核心问题是随机的「timestamp service is unavailable」失败,其实不需要完全替换codesign——可以写一个包装脚本作为自定义codesign,内部调用系统/usr/bin/codesign并添加重试逻辑,比如:

#!/bin/bash
# 自定义codesign包装脚本,添加重试机制
MAX_RETRIES=3
RETRY_DELAY=5

for ((i=1; i<=MAX_RETRIES; i++)); do
    /usr/bin/codesign "$@"
    if [ $? -eq 0 ]; then
        exit 0
    fi
    echo "Codesign failed (attempt $i/$MAX_RETRIES), retrying in $RETRY_DELAY seconds..."
    sleep $RETRY_DELAY
done

echo "All $MAX_RETRIES attempts failed"
exit 1

给这个脚本添加可执行权限(chmod +x /path/to/your/custom/codesign),然后用上面的CODE_SIGN_EXECUTABLE指定它即可,这样能大幅降低5%的失败率,比完全替换codesign更轻量。

备选方案:临时替换系统codesign(不推荐)

如果上述方法无效(比如某些旧版本Xcode不支持CODE_SIGN_EXECUTABLE),可以临时通过符号链接替换系统codesign,但需要关闭SIP(系统完整性保护),仅适合测试或CI环境:

# 先备份系统codesign
sudo mv /usr/bin/codesign /usr/bin/codesign.system
# 创建符号链接指向自定义codesign
sudo ln -sf /path/to/your/custom/codesign /usr/bin/codesign

构建完成后记得恢复原文件,避免影响系统其他功能。

内容的提问来源于stack exchange,提问作者tt.Kilew

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 20:57:37