Я работаю с Xcode 4.1 build 4B110f, пытаясь заставить мое приложение iOS готово к загрузке. Он проходит этап Product | Archive без ошибок, дважды запрашивая разрешение на подписание чего-либо. Но когда я пытаюсь проверять архив из Организатора, он терпит неудачу:
### Codesigning '/Users/uqrchern/Library/MobileDevice/Provisioning Profiles/70D2381D-3733-4F5D-88B2-4729572C2864.mobileprovision' with 'iPhone Distribution: Ron Chernich'
+ /usr/bin/codesign --force --preserve-metadata --sign iPhone Distribution: Ron Chernich --resource-rules=/var/folders/ul/ula1AHKnGpqQ9ftDnUL-l++++TM/-Tmp-/rybczU3EBd/Payload/ABRA-D.app/ResourceRules.plist --entitlements /var/folders/ul/ula1AHKnGpqQ9ftDnUL-l++++TM/-Tmp-/rybczU3EBd/entitlements_plistrZ1Vwko6 /var/folders/ul/ula1AHKnGpqQ9ftDnUL-l++++TM/-Tmp-/rybczU3EBd/Payload/ABRA-D.app
Program /usr/bin/codesign returned 1 : [/var/folders/ul/ula1AHKnGpqQ9ftDnUL-l++++TM/-Tmp-/rybczU3EBd/Payload/ABRA-D.app: replacing existing signature
/var/folders/ul/ula1AHKnGpqQ9ftDnUL-l++++TM/-Tmp-/rybczU3EBd/Payload/ABRA-D.app: object file format invalid or unsuitable
]
error: codesign failed with error 1
Я рассмотрел все подобные проблемы и решения (некоторые из которых не имеют никакого смысла или применимы к действительно старым версиям инструментов). Ничего не изменилось.
Я также проверил 3 раза, что проверка использует "производственный" сертификат, также как и код, который создает архив. Я даже включил вышеприведенный вывод в schell script, чтобы я мог попробовать все сертификаты вручную: каждый раз каждый раз.
Возможно, подписанный файл .app не подходит?
Кстати, у кодового кода нет флага версии, но справочная страница датирована 1 июня 2006 года. У бинара есть дата файла 20 ноября 2010 года.
ОБНОВЛЕНИЕ (на следующий день):
Исследование проблемы далее обнаружило неясную ссылку, в которой говорилось, что для кодирования требуется следующее окружение var:
CODESIGN_ALLOCATE=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate
Используя вывод из неудачного прогона проверки, я создал оболочку script, которая экспортировала этот var непосредственно перед ошибкой кодового кода --force step и viola! Работает код.
Но это не помогает мне подготовить мой код для загрузки. Есть ли способ включить его в script, который запускается кнопкой подтверждения органайзера?
МАЛЕНЬКАЯ ПОЗЖЕ ЕЩЕ, РЕШЕНИЕ!:
В соответствии с теорией существует script someplace, которая генерирует все команды, запускаемые во время проверки Organizer... запускать, я делал некоторые копания с grep и find. script действительно существует и его имя:
/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/PackageApplication
Это просто Perl, и исправление заключается в том, чтобы добавить требуемую среду var в ассоциативный массив% ENV прямо в начале, например, по строке 72:
$ENV{CODESIGN_ALLOCATE} = '/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate';
Это полностью устраняет проблему. Я понятия не имею, где все другие плакаты в Интернете, которые считают, что они исправили это путем сочетания удаления сертификатов, создания чистых, выключения и перезапуска Xcode и т.д., и т.д. Я просто буду утверждать, что это исправление способствует науке над суевериями и работает для меня в Xcode 4.1 Build 4B110f и связанной с ним PackageApplication script, работающей под Snow Leopard 10.6.8 с Perl 5.10.0