2011-09-13 14 views
8

OTHER_CODE_SIGN_FLAGSを使用して、アプリケーションのビルドと署名に必要な証明書を含むキーチェーンを指定することができたことを知りました。しかし、残念ながら私はそれを働かせることはできません。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

答えて

3

答えはアップグレードすることです:Xcode 4.3は、Check dependencies構築ステップの間にOTHER_CODE_SIGN_FLAGSフラグを尊重します。

+0

遅れてありがとうと申し訳ありません: – mbogh

1

iOSプロジェクトのCIを設定しようとしているときに同じ問題が発生しました。私はPackageApplication Perlスクリプトを更新して、キーチェーンオプションを渡すことをサポートしました。場所:

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

Appleからのライセンスの明確化を待っているので、更新されたスクリプトをGitHubに公開することができます。

+0

あなたがもっと知っているときに私に知らせてください。 – mbogh

+0

これをこれまで公開できましたか? – atreat

0

これらのどれも、スクリプト化されたビルドの中で最も単純なものがない限り、実際には機能しません。 @Tyler氏によると、PackageApplicationはキーチェーンの指定をサポートしていないし、xcodeのいくつかのバージョンでは、依存関係をチェックするときにキーチェーン間で重複した証明書が必要ではない。

時間を無駄にしないでください。Appleに電話して、証明書の名前を変更するよう依頼してください(実際には会社の名前を変更するには接尾辞を付ける---証明書を再生成して更新するだけですあなたのプロフィール)。

3

キーチェーンをキーチェーン検索リストに追加しなかった場合、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} 

言うまでもないが、私はこれを考え出す時間を失いました。

また、キーチェーンがビルドの長さに対応して開いていることを確認してください。としてadvised here

security -v set-keychain-settings -lut 7200 ${KEYCHAIN_NAME} 
+0

これは非常に便利ですが、私は 'ORIGINAL_KEYCHAINS'のユーザーキーチェーンのリストには、それぞれのアポストロフィが含まれていることがわかりました。その変数を 'CLEAN_KEYCHAINS =" $ {ORIGINAL_KEYCHAINS // \ "}" 'のようなコードで実行してください(何もしないですべてのアポストロフィを置き換えます)。 – Luke

関連する問題