8

我刚刚了解了使用 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}"

但这失败了:

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

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

#!/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}"

希望你们能帮忙-Morten

4

4 回答 4

4

我发现如果我没有将钥匙串添加到钥匙串搜索列表中,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} 

不用说,我花了几个小时来弄清楚这一点。

同样有帮助的是,确保钥匙链在构建期间保持打开状态。如此处建议

security -v set-keychain-settings -lut 7200 ${KEYCHAIN_NAME}
于 2014-06-09T05:34:08.933 回答
3

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

于 2012-02-27T22:22:21.103 回答
1

我在尝试为我们的 iOS 项目设置 CI 时遇到了同样的问题。我最终更新了PackageApplicationPerl 脚本以支持传递钥匙串选项。地点:

 /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/PackageApplication

我仍在等待 Apple 的许可说明,以便我可以将更新后的脚本发布到 GitHub。

于 2011-11-28T18:24:33.967 回答
0

除非您拥有最简单的脚本构建,否则这些都不会真正起作用。就像@Tyler 所说,PackageApplication 不支持指定钥匙串,并且某些版本的 xcode 在检查依赖项时将要求钥匙串之间没有重复的证书。

不要浪费您的时间,只需致电 Apple 并要求他们重命名您的一个证书(他们实际上会重命名您的公司 --- 通过附加一个后缀--- 您只需要重新生成证书并更新您的个人资料)。

于 2013-04-19T17:29:05.383 回答