xcodebuild 错误 - SecKey API 返回:-25308
Posted
技术标签:
【中文标题】xcodebuild 错误 - SecKey API 返回:-25308【英文标题】:xcodebuild error - SecKey API returned: -25308 【发布时间】:2017-01-03 20:07:47 【问题描述】:我在尝试构建我的 ios 应用时收到以下错误。此错误仅在为发布配置构建时发生。此外,我使用 CocoaPods 来构建我的第三方依赖项,这些构建通过 SSH 在 Jenkins 上运行。
SecKey API returned: -25308, (null)/Users/iosbuilder/Library/Developer/Xcode/DerivedData/*/Build/Intermediates/ArchiveIntermediates/Production/InstallationBuildProductsLocation/Applications/*.app/Frameworks/AFNetworking.framework:
unknown error -1=ffffffffffffffff
Command /bin/sh failed with exit code 1
我已尝试解锁构建服务器上的钥匙串,以确保没有用于钥匙串权限的 UI 块,但问题仍然存在...
知道为什么会发生这种情况以及如何解决这个问题吗?
【问题讨论】:
您是否尝试清理项目的构建文件夹? 是的,我已经多次清除所有内容。 通过此链接:forums.developer.apple.com/thread/64101 可能与钥匙串访问问题有关。 【参考方案1】:这是一个钥匙串访问问题。解决办法是Here
使用链接中的代码,您可以尝试在项目的构建配置的 shell 中执行该代码
【讨论】:
【参考方案2】:您可以使用安全命令来查找错误代码。 在这种情况下,它显示“不允许用户交互”。 如果您尝试通过 SSH(或通过 Jenkins 的脚本)对您的应用进行签名,这很典型。
security error -25308
Error: 0xFFFF9D24 -25308 User interaction is not allowed.
您需要执行安全命令以通过非交互式 shell 启用应用程序的代码签名:
security set-key-partition-list -S apple: -k <Password> -D <Identity> -t private <your.keychain>
这是一个“完整”的 Jenkins / SSH 友好脚本,用于签署您的应用程序:
MY_KEYCHAIN="temp.keychain"
MY_KEYCHAIN_PASSWORD="secret"
CERT="certificate.p12"
CERT_PASSWORD="certificate secret"
security create-keychain -p "$MY_KEYCHAIN_PASSWORD" "$MY_KEYCHAIN" # Create temp keychain
security list-keychains -d user -s "$MY_KEYCHAIN" $(security list-keychains -d user | sed s/\"//g) # Append temp keychain to the user domain
security set-keychain-settings "$MY_KEYCHAIN" # Remove relock timeout
security unlock-keychain -p "$MY_KEYCHAIN_PASSWORD" "$MY_KEYCHAIN" # Unlock keychain
security import $CERT -k "$MY_KEYCHAIN" -P "$CERT_PASSWORD" -T "/usr/bin/codesign" # Add certificate to keychain
CERT_IDENTITY=$(security find-identity -v -p codesigning "$MY_KEYCHAIN" | head -1 | grep '"' | sed -e 's/[^"]*"//' -e 's/".*//') # Programmatically derive the identity
CERT_UUID=$(security find-identity -v -p codesigning "$MY_KEYCHAIN" | head -1 | grep '"' | awk 'print $2') # Handy to have UUID (just in case)
security set-key-partition-list -S apple-tool:,apple: -s -k $MY_KEYCHAIN_PASSWORD -D "$CERT_IDENTITY" -t private $MY_KEYCHAIN # Enable codesigning from a non user interactive shell
### INSERT BUILD COMMANDS HERE ###
security delete-keychain "$MY_KEYCHAIN" # Delete temporary keychain
感谢 Bochun Bai 在 Apple 支持下花了 3 周时间寻找 -25308 问题的解决方案并将其发布到 https://sinofool.net/blog/archives/322
【讨论】:
【参考方案3】:刚刚重启了我的机器。它奏效了。
【讨论】:
以上是关于xcodebuild 错误 - SecKey API 返回:-25308的主要内容,如果未能解决你的问题,请参考以下文章
IOS:无法从 CryptoKit SecureEnclave 私钥创建 SecKey 表示(OSStatus 错误 -50 - 从数据创建 EC 私钥失败))