xcodebuild错误 - SecKey API返回:-25308

时间:2017-01-03 20:07:47

标签: ios cocoapods xcodebuild

我在尝试构建iOS应用时收到以下错误消息。仅在为Release配置构建时发生此错误。此外,我正在使用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块,但问题仍然存在......

知道为什么会这样,以及我如何解决这个问题?

3 个答案:

答案 0 :(得分:5)

这是一个钥匙串访问问题。解决方案是Here

使用链接中的代码,您可以尝试在项目的构建配置中的shell中执行该代码

答案 1 :(得分:0)

刚重启我的机器。它奏效了。

答案 2 :(得分:0)

您可以使用security命令查找错误代码。 在这种情况下,它表示"不允许用户交互"。 如果您尝试通过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>

这是一个完整的&#34;用于签署应用程序的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致敬,花了3周时间与Apple支持人员一起寻找-25308问题的解决方案并将其发布到https://sinofool.net/blog/archives/322