Xcode 5: erros de autorização de assinatura de código

149

Criei um novo aplicativo que suporta o IOS 7. Peguei o novo XCode 5 GM e tentei assinar meus aplicativos usando meu novo perfil de provisionamento e certificado de distribuição, mas estou tendo problemas com a distribuição. Eu constantemente recebo o seguinte erro:

"Direitos de assinatura de código inválidos. Os direitos na assinatura do pacote de aplicativos não correspondem aos que estão contidos no perfil de fornecimento. De acordo com o perfil de fornecimento, o pacote contém um valor-chave que não é permitido: '[XXXX.com.sample .company] 'para a chave' keychain-access-groups ".

Também o mesmo erro para um valor-chave chamado application-identifier.

Captura de tela do erro:

insira a descrição da imagem aqui

Benjamin de Bos
fonte

Respostas:

208

A solução está na nova opção no Xcode 5, que diz perfil de provisionamento. Basta definir o perfil de provisionamento do destino do projeto para o correto e ele funcionará.

insira a descrição da imagem aqui

Benjamin de Bos
fonte
6
Para adicionar a esta resposta - eu tinha os tipos Distribuição e Liberação para provisionar perfil. Eu recebi esse mesmo erro e foi porque eu tinha um perfil de desenvolvimento definido para o tipo Release (eu pensei que estava usando o tipo Distribution e não percebi o tipo Release). Depois de definir isso no meu perfil de distribuição, funcionou.
Bek
4
Para esclarecer melhor esta resposta, eu estava tentando definir meu perfil de provisionamento e identidade de assinatura de código na linha de nível superior de cada uma, usando a visualização Combinada. Isso ainda o ajustou novamente a <Vários valores>. Quando ampliei as duas linhas, no entanto, vi as subcategorias "Any iOS SDK" para cada configuração definidas como None, embora as linhas Debug / Release listassem o perfil / identidade de assinatura apropriados. O arquivamento nesse estado ainda me deu o erro, até eu definir explicitamente todas as linhas "Qualquer iOS SDK" para seus valores adequados.
Qix #
1
Passamos dias nessa! coisa ruim sobre isso, ainda tem que escolher o mesmo perfil novamente ao construir o IPA. Como você descobriu isso, Benjamin?
Cregox # 4/13
2
Infelizmente, isso não funciona para mim. Verifiquei meus perfis no site developer.apple.com e tenho a compra no Game Center e no aplicativo ativada. Também não uso e me pergunto se isso poderia ser um problema.
22813 JScarry
4
Para adicionar mais esclarecimentos, observe que o Xcode permite escolher informações de perfil de provisionamento para um projeto e um destino . Você precisa ter certeza de que está alterando as configurações do destino e não apenas do projeto.
Brian Stormont
55

Se você é como eu e acha que tentou TUDO , arquivou seu projeto mais de dez vezes, bateu a cabeça no teclado e ainda assim recebe esse erro. Por favor, faça um favor a si mesmo e simplesmente reinicie o XCode , funcionou para mim. Algum tempo a Apple ... eu te odeio.

VGruenhagen
fonte
Eu criei dois aplicativos diferentes em uma sessão do xcode e recebi 1000 erros. reiniciar funcionou. obrigado!
donmarkusi
Isso funcionou para mim também. Estou usando o Xcode 6.3. Não foi possível selecionar a conta de desenvolvedor apple para assinatura de código. Uma mensagem de erro totalmente independente era exibida sempre que "o ID do aplicativo ios 'xxxxxxxxx' não suporta alterações no recurso de mapas". Uma simples reinicialização do xcode o corrigiu para mim.
Sahil
3
Se eu pudesse te votar 1000 vezes, eu faria. Isso funcionou para mim. Isso aconteceu no XCode 7.1.
Manu Kanthan
25

Eu segui muitas das etapas acima, mas o que finalmente funcionou para mim foi atualizar meus perfis no Xcode. Não sei por que isso era necessário, pois o perfil de distribuição do meu aplicativo já estava aparecendo na lista. Aqui estão os passos:

  1. Preferências do Xcode
  2. Guia Contas
  3. Selecione seu ID Apple
  4. Clique no botão Visualizar detalhes no painel de detalhes do ID da Apple
  5. Clique no botão Atualizar no canto inferior esquerdo
Joe Regan
fonte
2
Depois de fazer isso, você também deve executar novamente o comando Build and Archive para garantir que o novo perfil seja aplicado. (Pelo menos, o que era necessário para mim.)
Brent Royal-Gordon
12

No meu caso, ativei os mesmos recursos no Xcode que nos serviços de aplicativos em developer.apple.com. Isso funciona para mim

insira a descrição da imagem aqui

insira a descrição da imagem aqui

novecapa
fonte
Foi o que funcionou para mim - não é possível desativá-las no centro de desenvolvedores e parece que o iOS 7.0 é compilado com o Xcode 5.1.1.
Matt H
6

No meu caso (desculpe), mudei "Equipe" para "Nenhum" em -> Geral -> Identidade

Em outro caso, eu precisava mudar essa identidade de "Nenhuma" para a conta de desenvolvedor que gerenciava as identidades e os perfis.

Às vezes, o Xcode mexe muito com a assinatura de código. Ou, meros mortais simplesmente não são inteligentes o suficiente para entender o que estão fazendo, é claro. Não desista, todos nós estamos passando por algumas torturas de assinatura de código às vezes!

RickJansen
fonte
Uau, você salvou minha noite, obrigado. Mas ... por que funcionou?
Martin
Por que funcionou… Eu acho que o Xcode é um produto extremamente complexo, e as identidades e o perfil de provisionamento foram complicados desde o início. Eu acho que ninguém mais tem um entendimento completo das inter-relações. Eu não. Às vezes é tentativa e erro, como mostra este tópico.
RickJansen
5

No meu caso, tive que definir o perfil de provisionamento correto para a versão e depois reiniciar o Xcode. Antes de reiniciar, tinha o mesmo perfil de provisão e não funcionava. Então, às vezes, um reinício pode fazer milagres. Talvez isso ajude alguém.

Beny Boariu
fonte
3

Se alguém usa um GameCenter, verifique esta seção no seu destino. Eu trabalhei com algum projeto antigo e houve 2 erros (mas tudo funcionou bem). Desativar e ativá-lo de volta resolveu esse problema.insira a descrição da imagem aqui

Provavelmente, essa ação adiciona o direito do Game Center ao ID do aplicativo e o trata por si próprio.

berílio
fonte
3

1. Vá para a pasta do projeto, exclua os arquivos * .entitlements. 2.Em seguida, vá para o destino do projeto xcode -> configurações de construção -> direitos de assinatura de código - exclua valores 3.Clean 4.Run

Vlad 25 WLD
fonte
3

Ah, esse erro glorioso. Para mim, sempre que vejo esse erro, verifico o seguinte:

1. Permita que o XCode acesse suas informações de perfil de provisionamento o tempo todo - se o XCode continuar perguntando quando você o inicia para ter acesso aos arquivos particulares do computador, para que ele possa obter informações de perfil de provisionamento com as opções para permitir o acesso sempre, não agora, ou apenas uma vez - defina-o para permitir sempre o acesso

2. Se você tiver algum arquivo de direitos antigo disponível no seu projeto, livre-se deles e faça qualquer sinal deles - se você vir um arquivo .entitlements no seu projeto, exclua-o (ou pelo menos remova a referência a ele, se não tiver certeza você está pronto para excluí-lo completamente) e verifique se a linha 'Autorizações para assinatura de código' na seção 'Assinatura de código' em Configurações de compilação está vazia

3. Verifique on-line os serviços de aplicativos e faça a correspondência com os serviços no XCode para o aplicativo - Vá para o Apple Member Center e verifique o ID do aplicativo, clique no aplicativo para ver seus 'Serviços de aplicativos' e veja o que você foram verificados, acesse o XCode e verifique a seção 'Recursos' para garantir que os dois tenham a mesma lista de serviços da Apple nos dois

4. Certifique-se de atribuir um perfil de aprovisionamento válido ao seu aplicativo antes de validar - verifique novamente o perfil de aprovisionamento do aplicativo no Apple Member Center, verifique se ele não está vencido, se possui o ID do aplicativo correto, com o ID do pacote e a distribuição corretos . Faça o download e clique no novo perfil de aprovisionamento para garantir que o XCode o possui, ou vá para XCode> Preferências> Contas> clique na sua conta e em 'Exibir detalhes' e clique no botão do canto inferior para sincronizar todos os perfis com o XCode. Você deve ter o perfil disponível para seleção agora na seção 'Assinatura de código'. Depois de ter o perfil de provisionamento correto, você pode definir as linhas 'Identidade de assinatura de código' para a opção correta para esse perfil de provisionamento.

Nota - se estiver executando um certificado de distribuição, poderá ajudar a definir todas as linhas 'Identidade de assinatura de código' para a identidade que você usa para distribuição, incluindo as linhas de depuração

5. SE TODO O OUTRO FALHAR - Limpe seu projeto e reinicie o XCode, e alguma mágica da Apple poderá funcionar bem na próxima vez em que você abrir o projeto e tentar validar

ColossalChris
fonte
2

Se você está construindo um projeto 3.1.5 antigo, o Xcode 5 tem alguns bugs que, infelizmente, tornam a resposta de Benjamin impossível, pois não há perfis de provisionamento para escolher. Depois de muitas horas de leitura atormentada dos arquivos do projeto Xcode, eu vim com esta solução que funcionou para mim:

  • No painel Utilitários (à direita) no Xcode 5, no documento do projeto, altere de compatível com Xcode 3.1 para compatível com Xcode 3.2.
  • Digite o nome da sua organização.
  • Feche o projeto.
  • Abra o arquivo do seu projeto, por exemplo open -a TextEdit path/to/name.xcodeproj/project.pbxproj
    • Remova as duas cláusulas de distribuição ( isa=XCBuildConfiguration).
    • Remova as duas linhas que acompanham o buildConfiguration (uma em PBXNativeTargetuma e uma em PBXProject XCConfigurationLists)

Agora você está pronto para reabrir, arquivar e enviar para a App Store - voilà! Funciona de novo!

Como eu acho que funciona

Suponho que isso funcione porque a Apple, em algum momento da linha, decidiu abandonar a necessidade de qualquer configuração de distribuição separada, o que é uma coisa boa. Quando eu arquivo, o Xcode codifica automaticamente sinais para distribuição. É assim que deveria ter sido implementado, é uma pena que a Apple não consiga fazer a migração automática parte do IDE; em vez disso, nos forçam a desenvolvedores a gastar décadas de trabalho para fazer essas coisas funcionarem.

Jonas Byström
fonte
2

Estou lutando com esse problema há mais de um dia, tentando todos os tipos de soluções sugeridas aqui e em outros lugares na Internet. Nada funcionou...

Mas finalmente consegui resolver o problema!

O problema que tive foi com um aplicativo antigo que não toquei há mais de três anos e agora estava prestes a lançar uma atualização há muito esperada. Desde o lançamento do aplicativo, a Apple atualiza o funcionamento dos certificados e do ID do aplicativo. Eles introduziram o conceito de ID da equipe que parece recomendado. Em particular, o site "Certificados, identificadores e perfis" da Apple sofreu muitas mudanças desde então.

Lá, percebi que o perfil de provisionamento que eu estava usando para a App Store Distribution estava conectado ao ID do aplicativo, ED8xxxxxxx.com.rostsolutions.*mas olhando para o ID do aplicativo para o jogo que estava prestes a enviar, observei que o ID do aplicativo era ATMxxxxxxx.com.rostsolutions.Swisch. Portanto, o prefixo do ID do aplicativo não corresponde! Essa parecia ser a raiz do problema. Então, o que fiz foi criar um novo perfil de provisionamento conectado ao ID do aplicativo ATMxxxxxxx.com.rostsolutions.Swisch. Usando esse perfil de provisionamento, enviei meu aplicativo com sucesso à App Store e agora mantenho meus dedos cruzados para que tudo funcione bem do lado da Apple.

(Tentei conectar-me primeiro ao novo perfil de provisionamento no ID do curinga ATMxxxxxxx.com.rostsolutions.*, mas isso não pareceu funcionar).

Mas o que me intriga é que, quando olho para o antigo aplicativo no iTunes Connects e vou para Detalhes binários, ele diz que o ID do aplicativo é ED8xxxxxxx.com.rostsolutions.Swisch. Então, por que a página "Certificados, identificadores e perfis" lista o ID do aplicativo como ATMxxxxxxx.com.rostsolutions.Swisch?

Daniel
fonte
Obrigado por postar este Daniel. Estou vendo um comportamento semelhante que impede que certificados e perfis desejados sejam usados. Toda vez que eu baixa um certificado ou permito que o Xcode faça isso, aparece um ID da equipe 'fantasma' que 'quebra' a capacidade (uso) do iCloud no meu caso. Nenhuma resolução para mim ainda.
David
AMD! Essa mesma porcaria está acontecendo conosco com mais de 50 aplicativos! Ugh, a equipe fantasma está nos matando. Por que a Apple Por que! ????
Sukima 7/11
2

Meu problema foi resolvido removendo meu ID Apple de Preferências-> Contas e adicionando-o novamente. Todos os meus arquivos de perfil de provisionamento apareceram no painel do utilitário Visualizar detalhes. Eu estava escolhendo errado "Perfil de provisionamento da equipe Mac: *" em vez do perfil de provisionamento de distribuição real do projeto, pensando que era uma seleção genérica. Os arquivos de provisionamento devem ser específicos ao projeto. Ah, e BTW, verifique se o seu perfil de aprovisionamento tem os direitos corretos (por exemplo, Maps). Consegui lançar um aplicativo com o OSX Maps sem o direito e a Apple o aprovou - mas nenhum Maps apareceu na versão de produção!

Brainware
fonte
1

No meu caso, eu tive o mesmo problema, minha solução foi alterar o 'Release Provisioning Profile' nas Configurações de compilação antes de fazer o Archive. Faço isso duas vezes, uma para distribuição na App Store e outra para distribuição Ad Hoc. Também adiciono um comentário nos meus arquivos. Minha conclusão é que há algo quebrado na "assinatura do arquivo".

Hector
fonte
1

Há um tutorial muito bom para resolver esse problema neste site.

Ele afirma que esse problema pode ocorrer quando o Identificador de pacote de projetos é diferente daquele que você inseriu no site do iTunes Connect .

130e13a
fonte
1

Eu acho que o xcode 5 usa "release" em vez de "distribuição" que você mesmo criou.

superarts.org
fonte
1

Se tudo acima não funcionou (no meu caso, depois de alguns dias sem sorte, tentando de tudo), tenho apenas um aplicativo para Mac. CUIDADO COM A REVOGAÇÃO!

1) Revogue manualmente todas as "Mac App Distribution" e "Mac Installer Distribution"
2) Limpe os certificados e as chaves abertas relevantes no Keychain ( Aviso: exporte antes de excluir)
3) Reinicie o Xcode 4) Acesse (no Safari) developer.apple .com -> certificados etc. 5) Crie CertificateSigningRequest.certSigningRequest no Keychain-> Assistente de certificado
6) Crie manualmente em developer.apple.com as "Mac App Distribution" e "Mac Installer Distribution" com seu * .certSigningRequest
7) Provisioning Perfis -> Distribuição -> criar / corrigir provisão personalizada para AppStore (eu sou nomeado especialmente como "perfil de provisão para Mac para AppStore"
8) Xcode -> Configurações -> Conta -> Sua conta ->Atualizar 9) Xcode Clean -> Arquivo -> Validar

WINSergey
fonte
1

Eu tenho lutado com problemas semelhantes (eu estava construindo para a distribuição Ad-Hoc). A única coisa que mudou desde a última implantação bem-sucedida foi adicionar dois dispositivos ao perfil de provisionamento.

Depois de verificar duas e três vezes todas as configurações de compilação, regenerei o perfil de provisionamento (sem alterar nada), baixei novamente e funcionou bem.

Portanto, observe a si mesmo: se não houver explicação lógica, você sempre poderá experimentar o bom e velho vodu de TI.

Também recomendo o Utilitário de configuração do iPhone , que, apesar do nome, é útil para verificar quais perfis de provisionamento você possui no computador.

Tomek Cejner
fonte
1

ERRO ITMS-9000: “Este pacote é inválido. Novos aplicativos e atualizações de aplicativos enviados à App Store devem ser criados com versões públicas (GM) do XCode 5.1.1 ou superior e do iOS 7 SDK. Não envie aplicativos criados com software beta.

hi0001234d
fonte
0

Se vários desenvolvedores estiverem usando a mesma conta do centro de membros. Um deles não pode usar um certificado criado por outras pessoas porque eles usaram uma solicitação de certificado criada usando seus computadores.

Você precisa usar um certificado criado por você (solicitação de certificado criada usando o seu computador).

Em alternativa, disse-lhes para enviar o perfil de desenvolvedor. não tenho certeza do nome. para usar um certificado criado em outro computador.

hasan
fonte
0

Os direitos de assinatura de código ocorrem porque seu recurso não contém o arquivo de direitos nos recursos. Basta ir para a configuração de criação e procurar Direitos de assinatura de código excluir a entrada para depuração e liberação, criar projeto novamente e você verá que não há erro. Felicidades

Shauket Sheikh
fonte
-1

Eu tive o mesmo problema, mas nada escrito aqui funcionou para mim. No entanto, eu encontrei uma maneira simples que funcionou para mim. Veja como fazê-lo:

1) Nas configurações de criação do seu Projeto e seus Objetivos, escolha "Nenhum" para todos os perfis de provisionamento e escolha "Não assinar código" para todas as identidades de assinatura de código.

2) Agora, escolha seu alvo e vá para criar configurações. Na configuração Liberação de identidade da assinatura de código, escolha "Distribuição iOS" para "Qualquer iOS SDK". E, na configuração Liberação do perfil de provisionamento, escolha seu perfil de distribuição para "Qualquer iOS SDK". Depois disso, sua configuração de Liberação de identidade com assinatura de código deve mudar automaticamente para "Distribuição do iPhone".

3) Arquive sua compilação e valide. Agora deve funcionar bem. É isso aí!

jimpavloff
fonte