Флаг цепочки ключей OTHER_CODE_SIGN_FLAGS игнорируется? - PullRequest
8 голосов
/ 13 сентября 2011

Я только что узнал о возможности использовать 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}"

Надеюсь, вы, ребята, можете помочь -Мортен

Ответы [ 4 ]

4 голосов
/ 09 июня 2014

Я обнаружил, что если я не добавлю цепочку для ключей в список поиска цепочки для ключей, 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}
3 голосов
/ 28 февраля 2012

Ответ заключается в обновлении: Xcode 4.3 учитывает флаг OTHER_CODE_SIGN_FLAGS на этапе сборки Check dependencies.

1 голос
/ 28 ноября 2011

Я столкнулся с той же проблемой, пытаясь настроить CI для наших проектов iOS. В итоге я обновил скрипт Perl PackageApplication для поддержки передачи параметра цепочки для ключей. Расположение:

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

Я все еще жду некоторых разъяснений по лицензированию от Apple, чтобы я мог опубликовать мой обновленный скрипт на GitHub.

0 голосов
/ 19 апреля 2013

Ничто из этого действительно не работает, если у вас нет простейших сборочных сценариев. Как сказал @Tyler, PackageApplication не поддерживает указание цепочки для ключей, и в некоторых версиях xcode для проверки зависимостей не требуется дублировать сертификаты в цепочках ключей.

Не тратьте свое время, просто позвоните в Apple и попросите их переименовать один из ваших сертификатов (они на самом деле переименуют вашу компанию - добавив суффикс) - и вам просто нужно восстановить свои сертификаты и обновить свои профили).

...