Codesign retornou 1 (formato ifile do objeto inválido ou inadequado) bug

Estou trabalhando com o Xcode 4.1 build 4B110f tentando preparar meu aplicativo iOS para upload. Ele passa na etapa Produto | Arquivo sem erros, solicitando duas vezes permissão para assinar algo. Mas quando tento validar o arquivo do Organizer, ele falha:

### 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

Analisei todos os problemas e soluções semelhantes (alguns dos quais não fazem sentido, ou se aplicam a versões realmente antigas das ferramentas). Nenhum fez a menor diferença.

Também verifiquei três vezes se o certificado está usando o "production", assim como a etapa de codificação que produz o arquivo. Eu até transformei a saída acima em um script schell para poder experimentar todos os certificados manualmente: sempre o mesmo resultad

Talvez o arquivo .app sendo assinado seja realmente inadequado?

Incidentalmente, o codesign não possui sinalizador de versão, mas a página do manual é datada de 1º de junho de 2006. O binário possui uma data de arquivo em 20 de novembro de 201

UPDATE (dia seguinte):

pesquisa do problema encontrou ainda uma referência obscura dizendo que o código de projeto precisa do seguinte conjunto de var de ambiente:

CODESIGN_ALLOCATE=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate

Usando a saída de uma execução com falha na validação, criei um script de shell que exportou essa var pouco antes do código de falha --force step e viola! O código de código funciona.

Mas isso realmente não me ajuda a preparar meu código para upload. Existe uma maneira de incluir isso no script executado pelo botão Validar do organizador

UM POUCO MAIS TARDE, A SOLUÇÃO! :

Sob a teoria, existe um script em algum lugar que gera todos os comandos executados durante um Organizer Validate ... run, eu fiz algumas pesquisas com grep e find. O script realmente existe e seu nome é:

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

É apenas Perl e a correção é adicionar o ambiente necessário var à matriz associativa% ENV logo no início, digamos na linha 72:

$ENV{CODESIGN_ALLOCATE} = '/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate';

Isso corrige totalmente o problem Eu não tenho ideia de onde todos os outros pôsteres na web que acham que o corrigiram através de combinações de exclusão de certificados, criação limpa, desligamento e reinicialização do Xcode, etc, etc. Eu apenas afirmo silenciosamente que esta correção favorece a ciência e não a superstição e funciona para mim no Xcode 4.1 Build 4B110f e seu script PackageApplication associado, executando no Snow Leopard 10.6.8 com Perl 5.10.0

questionAnswers(3)

yourAnswerToTheQuestion