【问题标题】:xcodebuild error - SecKey API returned: -25308xcodebuild 错误 - SecKey API 返回:-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 块,但问题仍然存在...

知道为什么会发生这种情况以及如何解决这个问题吗?

【问题讨论】:

标签: ios cocoapods xcodebuild


【解决方案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】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多