Pergunta

Finalmente chegamos ao ponto de enviar nosso primeiro aplicativo para iPhone para a App Store (ou tentando), mas não consigo que o iTunes se conecte para aceitar o upload.

Eu tentei através do site ("O binário que você carregou foi inválido. A assinatura era inválida ou não foi assinada com um certificado de envio da Apple.") E o carregador de aplicativos ("info.plist não contém uma especificação cfbundleResources. ").

Depois de muita leitura (incluindo perguntas como essas), relendo e pesquisando no Google, posso dizer isso:

  • Tenho certeza de que o identificador do pacote corresponde ao Appid.
  • Existe um ícone.png, é um arquivo PNG de 57x57 PX, e esse é o nome exato no info.plist.
  • Estou fazendo um dispositivo, não simulador, construir.
  • O processo de assinatura é bem -sucedido: os resultados da construção mostram isso e em execução codesign -vvvv MyApp.app não indica problemas.
  • Não há caracteres estranhos no caminho para o arquivo zip.
  • Excluí a pasta de construção e reconectei o binário algumas vezes.

Agora, é verdade que no aplicativo construído, o info.plist não contém um CFBundleResourceSpecification Chave, mas não está claro para mim de onde esse valor deve vir ou o que mais eu preciso adicionar para fazer isso funcionar. (A única referência que posso encontrar usando a pesquisa da Apple é alguns Notas de versão de assinatura de código... Mas, como mencionei acima, a etapa de assinatura do código está tendo sucesso, tanto quanto eu sei.)

Alguém se deparou com alguma explicação para esse problema que eu ainda não mencionei?

EDITAR: Aqui está a saída (ligeiramente redigida) da etapa de assinatura do código da construção, FWIW:

Código Screenshot http://img70.yfrog.com/img70/8988/codesign.png

Foi útil?

Solução

O problema parece ter sido que eu estava usando JSON-Framework no meu aplicativo, e incluí -lo como um SDK adicional por as instruções no wiki. Meu palpite é que o Xcode ficou confuso com a presença de> 1 SDK e, portanto, não conseguiu encontrar os recursos padrão.

Encontrei duas soluções (bem, soluções alternativas, de qualquer maneira):

  1. Use a configuração "Caminho do caminho do recurso de assinatura de código" (que está em branco por padrão) para especificar o caminho para o arquivo xcode deve usar: $(SDKROOT)/ResourceRules.plist. Isso funciona, e parece razoavelmente inofensivo, mas é frustrante no sentido de que o Xcode deve ser capaz de descobrir isso por conta própria. (Eu encontrei esta solução em um questão muito antiga Arquivado no JSON-Framework.)
  2. Não use a abordagem SDK. Em vez disso, basta incluir os arquivos diretamente no projeto e atualizar o #import declarações com caminhos locais. Essa é a abordagem que acabei adotando, já que tomamos uma decisão geral de dobrar todas as dependências externas no próprio projeto (para que outros desenvolvedores tenham menos configuração a fazer em suas máquinas para subir e funcionar).

Não tenho certeza se isso é um bug no Xcode, ou algo errado com o JSON-Framework, mas eu tenho arquivou um problema Neste último, apenas por precaução.

Atualização, 30 de junho de 2010: A questão que arquivei foi fechada e o Sr. Brautaset planeja remover o suporte para a opção SDK na próxima versão (2.3) do projeto. Também o código agora vive no github, embora as páginas do Google Code ainda existam por enquanto.

Outras dicas

Para mim, depois de verificar todas as coisas (Codesign, o arquivo do ícone ...), mas você não pode fazer o upload do seu aplicativo, tente excluir o arquivo construído. Lembre -se de copiar o arquivo.app para zip seu aplicativo.

Você tem certeza de que está construindo com uma distribuição, em oposição ao desenvolvimento, certificado e forneceção móvel?

Presumo que você esteja enviando um arquivo .zip.

Acabei de verificar um aplicativo que carreguei e o CFBUNDLERESOURCESPECIFICATION está apenas nas versões assinadas (ou seja, o dispositivo cria).

Você está fazendo algum de seu prédio/copiando/zipping da linha de comando? Nesse caso, você deve ter muito cuidado com os links simbólicos. o .app Vem com um subdiretório como um link simbólico para outro e, se você o copiar ou fechar sem as bandeiras corretas, ele cópia impressa o conteúdo, que mexerá com o codesigning.

Isso aconteceu comigo - e a pior parte é que as compilações ad -hoc funcionam bem sem o link simbólico, para que você não perceba o problema até a criação da App Store.

Esta mensagem pode acontecer por outro motivo (como acabei de descobrir esta manhã): se o seu projeto tiver várias informações.

Isso estava acontecendo comigo porque uma parte automatizada da construção estava criando uma informação. Plista em um pacote trazido para o projeto.

Gorjeta de chapéu aqui para a solução:http://infinite-sushi.com/2010/08/the-case-of-the-missing-cfbundleresourcespecification/

Para mim, a solução foi criar uma certificação distribuída em:Apple Developer Provisioning Portal.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top