OTHER_CODE_SIGN_FLAGS钥匙串标志被忽略了吗?

mbo*_*ogh 8 iphone xcode xcodebuild codesign

我刚刚了解了使用OTHER_CODE_SIGN_FLAGS指定钥匙串的可能性,其中包括构建和签署应用程序所需的证书.但不幸的是,我无法让它发挥作用.

我的脚本看起来像这样:

#!/bin/bash
TARGET="MyProject"
CONFIGURATION="Release"
SDK="iphoneos"
IDENTITY="iPhone Developer: John Doe (XX22RR22O)"
KEYCHAIN="/Users/username/Library/Keychains/someKeyChain.keychain"
PASSWORD=""

security unlock-keychain -p ${PASSWORD} ${KEYCHAIN}
xcodebuild -target "${TARGET}" -configuration ${CONFIGURATION} -sdk $SDK CODE_SIGN_IDENTITY="${IDENTITY}" OTHER_CODE_SIGN_FLAGS="--keychain ${KEYCHAIN}"
Run Code Online (Sandbox Code Playgroud)

但那失败了:

Check dependencies
[BEROR]Code Sign error: The identity 'iPhone Developer: John Doe (XX22RR22O)' doesn't match any valid certificate/private key pair in the default keychain
Run Code Online (Sandbox Code Playgroud)

但是,如果我首先切换到钥匙串它可以工作,但是在多个构建可能同时发生的构建服务器上不可用:

#!/bin/bash
TARGET="MyProject"
CONFIGURATION="Release"
SDK="iphoneos"
IDENTITY="iPhone Developer: John Doe (XX22RR22O)"
KEYCHAIN="/Users/username/Library/Keychains/someKeyChain.keychain"
PASSWORD=""

security unlock-keychain -p ${PASSWORD} ${KEYCHAIN}
security default-keychain -s ${KEYCHAIN}
xcodebuild -target "${TARGET}" -configuration ${CONFIGURATION} -sdk $SDK CODE_SIGN_IDENTITY="${IDENTITY}" OTHER_CODE_SIGN_FLAGS="--keychain ${KEYCHAIN}"
Run Code Online (Sandbox Code Playgroud)

希望你们能帮忙 - 莫顿

Ben*_*ynn 5

我发现如果我没有将钥匙串添加到钥匙串搜索列表中,xcodebuild 将不会尊重该OTHER_CODE_SIGN_FLAG --keychain设置。我必须添加这段代码:

// Early in the script
ORIGINAL_KEYCHAINS=`security list-keychains -d user`

// After I create my keychain, add it to the list
security list-keychains -d user -s ${ORIGINAL_KEYCHAINS} "${KEYCHAIN_NAME}"

// On cleanup
security list-keychains -d user -s ${ORIGINAL_KEYCHAINS} 
Run Code Online (Sandbox Code Playgroud)

不用说,我花了几个小时来解决这个问题。

确保钥匙链在您的构建过程中保持打开状态也很有帮助。正如这里建议的

security -v set-keychain-settings -lut 7200 ${KEYCHAIN_NAME}
Run Code Online (Sandbox Code Playgroud)


Ian*_*ell 3

答案是升级:Xcode 4.3OTHER_CODE_SIGN_FLAGS在构建步骤中尊重该标志Check dependencies