O perfil não corresponde ao valor do arquivo de direitos para o identificador de aplicativo de direitos

95

Estou tentando fazer upload de um aplicativo para a loja de aplicativos e estou recebendo este erro na página que contém os certificados. Pelo que posso dizer, mudei o campo para que eles combinassem, mas estou faltando alguma coisa.

isso é o que aparece

Qualquer ajuda seria muito apreciada.

info.plist

Paul Raymond
fonte
1
Mostre seu entitlements.plistarquivo.
Imad Ali
Talvez seja porque nunca o procurei antes, mas os únicos plists que vejo dizem info, mas aqui é que é a segunda imagem.
Paul Raymond
diz que não posso postar mais links, estou prestes a pegar um avião para Chicago se alguém descobrir alguma coisa
Paul Raymond

Respostas:

209

Não sei por que isso corrigiu, mas entrei na guia Recursos do alvo, liguei o iCloud, tentei fazer uma compilação de arquivo, falhou, desliguei o iCloud novamente, tentei fazer uma compilação de arquivo e deu certo, e depois disso, ele foi capaz de resolver automaticamente os certificados novamente.

samkass
fonte
1
Corri para isso sozinho com o Xcode 9, e alternar as coisas resolveu. A única coisa "diferente" sobre o projeto é que ele é antigo. Tipo, 2010 antigo. Então, talvez algum arquivo de projeto legado acontecendo ...?
Echelon
13
Obrigado por isso - depois de ligar / desligar, ele criou um plist vazio de .entitlements próximo ao xcodeproj. Parece que é isso que o processo de envio está procurando. Provavelmente apenas um problema no Xcode 9 para aplicativos existentes que não requerem quaisquer direitos / recursos.
Andrew Wood
3
O mesmo aqui. Projeto antigo. Muito obrigado pela sugestão de alternar um recurso, agora há um .entitlements vazio que é aceito. Arquivando um bug com a Apple.
RickJansen,
6
Espancado uma noite inteira neste bs. Tive que ligar e desligar, o que criou o arquivo de direitos em branco, e então eu tive que apontar minha configuração de construção 'Direitos de assinatura de código' para esse arquivo em branco.
Adam Waite
2
No Xcode 10.0beta5 isso ainda está acontecendo. Para mim, foi devido à mudança do nome do projeto depois que os direitos foram criados. Ativar e desativar o iCloud renomeou o arquivo de direitos e atualizou seu nome nas configurações de compilação. O conteúdo do arquivo era idêntico. Parece que o uploader se preocupa com o nome do arquivo de direitos, independentemente do nome do arquivo de configurações de compilação.
Troy
43

Clique com o botão direito no Finder -> Ir para a pasta ...

~/Library/MobileDevice/Provisioning

Para Xcode 11

~/Library/MobileDevice/Provisioning Profiles/

Exclua todos os perfis de provisionamento, pronto.

Nidhi
fonte
1
no meu caso, a pasta é "~ / Library / MobileDevice / Provisioning Profiles"
LightMan
Concordo, esta é a resposta correta, apenas com o Xcode 11 o caminho é~/Library/MobileDevice/Provisioning Profiles/
Marius Kažemėkaitis
1
Por que isso resolve o problema? O que acabamos de excluir? Isso tem algum efeito colateral?
markdon
Você está excluindo os perfis de provisionamento adicionados automaticamente pelo Xcode ou manualmente ao abrir um perfil de developer.apple.com. Se você não quiser perder outros perfis, pode usar algo como ... grep -ir YOUR_APP_ID ~ / Library / MobileDevice / Provisioning \ Profiles; Para mostrar quais perfis correspondem. Basta excluí-los e ele realizará a mesma tarefa.
Chris Douglass
Isso corrige, mas você precisa ir para o Xcode primeiro e desmarcar Automaticamente Gerenciar Assinatura, então faça o acima e verifique novamente a Assinatura Automática e está tudo bem. Consertou para mim. Veja a descrição completa aqui :: ottorinobruni.com/…
c0d3p03t
35

O aplicativo que você criou tem um application-identifiervalor incorreto , para o que o perfil de provisionamento está esperando. O cert para appID com.example.foopara a equipe 2ABCDEFGserá esperado application-identifier: 2ABCDEFG.com.example.foo, seu app declarou que seu appID era com.example.foo, mas oapplication-identifier não correspondeu, ou você está usando o prefixo de equipe errado ou o bundleID está configurado incorretamente.

No meu caso, estou usando esquemas de compilação para me permitir construir um aplicativo de produção e um aplicativo de qa. com.example.foopara prod, ecom.example.foo.qa para QA.

Eu tinha definido meu bundleIdentifier no Info.plistpara $(PRODUCT_BUNDLE_IDENTIFIER)$(BUNDLE_SUFFIX), que funciona muito bem no simulador e no dispositivo por ter aplicativos diferentes, no entanto, quando o aplicativo gera seuapplication-identifer durante a fase de arquivamento, ele não deve estar lendo o bundleIdentifier gerado pelo Info.plist.

Para remediar a situação, eu editei FooProject.xcodeproj/project.pbxproj(com um editor de texto) para alterar meu buildSettings de QA PRODUCT_BUNDLE_IDENTIFIERparacom.example.foo.qa

Você pode ver as perguntas e respostas técnicas da Apple e esta página para ver como se aprofundam na solução disso. Depois de executar o seguinte em seu aplicativo exportado:

codesign -d --entitlements :- ./Payload/myApp.app

e ver com o que application-identifierseu aplicativo foi criado, será muito rápido perceber o que você está fazendo de errado.

Não encontrei essa página na minha pesquisa do Google, porque eles não usam a frase da mensagem de erro nem chamam o identificador do aplicativo pelo nome completo, mas sim pelo ID do aplicativo.

Além disso, a solução para esse problema não é gerar um novo perfil de provisionamento que tenha o application-identifierdireito, ele tem esse direito, no entanto, o valor no perfil de provisionamento e seu aplicativo devem corresponder.

Peter Dietz
fonte
3
Obrigado! Consegui corrigir alterando minhas configurações de compilação, no pacote, para usar meu var personalizado para o sufixo no Identificador do Pacote de Produtos. por exemplo, com.mycompany.myapp $ (BUNDLE_ID_SUFFIX) e isso resolveu. Portanto, não precisei editar o arquivo do projeto manualmente e consegui manter facilmente diferentes ids de pacote por ambiente.
1
Uma razão pela qual você pode ter incompatibilidade de identificador de aplicativo é que você não tem todos os perfis de provisionamento baixados. Seu arquivo é criado com o perfil curinga se o perfil com o id de aplicativo exato estiver faltando, o que leva à incompatibilidade na fase de exportação.
diidu
Isso funcionou para mim. Eu estava construindo um aplicativo Ionic e percebi que testei em uma conta diferente. Usei com.foo.testName e alterei-o novamente ao construir com a conta correta. Parece que o com.foo.testName ainda estava no arquivo
pbxproj
Muito obrigado, era exatamente isso que estava bloqueando minha validação, e a explicação é muito clara!
MDH
@ n8tr Após quase uma semana de dor de cabeça e frustração, seu comentário me salvou. Obrigado.
Behdad 01 de
10

Talvez o arquivo {project} .entitlements esteja faltando. Fazer o que @samkass mencionou irá gerar automaticamente o arquivo e ele funcionará. Então, basicamente, vá para a guia de recursos, habilite qualquer coisa e desabilite.

Mrhangz
fonte
Isso é bobo, mas funcionou para mim em vários projetos antigos que estava atualizando.
aspro
8

Alterar o botão do iCloud para ativar, construir e desativar o iCloud eliminou o erro dizendo que:

O perfil não corresponde aos valores do arquivo de direitos para os direitos de identificador de aplicativo e grupos de acesso de keychain.

Pôr do Sol
fonte
Claro que essa seria a solução! Por que não pensei nessa coisa completamente não óbvia para tentar? Obrigado Apple.
Jonathan Plackett
4

No Xcode 11, isso pode acontecer quando um arquivo .entitlement não está presente para o seu projeto. A solução seria adicionar qualquer recurso aleatório clicando em '+ Recurso' em 'Assinatura e recursos' (que leva à criação de um arquivo .entitlement) e, em seguida, removendo o recurso. Isso permitirá que você provisione automaticamente um certificado também.

Bijoy Thangaraj
fonte
2

Verifique os recursos do aplicativo que são necessários para seu aplicativo, como compra no aplicativo, notificação push, áudio Inter App, kit Siri etc.

Essa é a única causa para esse tipo de erro.

Certifique-se de que no id do seu aplicativo as sinalizações acima devem estar ativadas.

Na maioria das vezes isso acontece quando você não configurou a notificação push, na compra do aplicativo em seu ID de aplicativo de desenvolvimento.

Tecnologia
fonte
Eu não habilitei nada. É realmente frustrante.
Paul Raymond
seu aplicativo tem algum recurso que eu mencionei acima
Tech
Vou anexar uma captura de tela mais tarde, mas não, não há notificações push ou em compras de aplicativos para o aplicativo.
Paul Raymond
Do que exatamente você quer uma captura de tela? sob plist não menciona direitos.
Paul Raymond
2

Entrei na guia Recursos do alvo, ativei o Compartilhamento de Chaves e começou a funcionar

romano
fonte
2

Para mim, o truque era

  1. adicionar / remover um recurso para o destino (no meu caso, um widget);
  2. certifique-se de que o arquivo de direitos criado esteja listado nas configurações de construção;
  3. e adicionar a chave "APS Environemnt" com o valor "development" ao arquivo entitlemenets.
Joris Weimar
fonte
1

No Xcode 10, comecei a trabalhar movendo o arquivo de direitos para a pasta correta no Project Navigator. Eu não tinha o arquivo de direitos, mas consegui obtê-lo alternando os recursos na guia capacidades.

insira a descrição da imagem aqui

Mikkokut
fonte
1

Recebi este mesmo erro e nenhuma das soluções acima resolveu o problema no meu caso.

O que funcionou para mim foi alterar a configuração "Pode ser depurado" no arquivo "Entitlements.plist" de "NÃO" para "SIM".

joemama
fonte
1

No meu caso, o problema era o seguinte: o perfil de provisionamento usado para a etapa de compilação foi criado para um ID de aplicativo diferente do perfil de provisionamento usado para a etapa de exportação.

Portanto, certifique-se de usar o mesmo perfil de provisionamento para a etapa de construção e exportação.

Alexey Komov
fonte
Porque eu queria destacar que esse erro pode ocorrer por causa de diferentes perfis de provisionamento na etapa de construção e exportação. A mensagem de erro não é útil para encontrar a causa raiz neste caso. Quanto ao motivo pelo qual a resposta está atrasada - esse erro não está vinculado a um período específico de tempo. Então, aconteceu há 1 ano e agora acontece do mesmo jeito. A resposta aceita não funcionou no meu caso.
Alexey Komov
1

O que funcionou para mim foi que fiz o arquivo no XCode 11 e fiz o upload para o Xcode 12 beta.

Badr
fonte
0

Faça a verificação cruzada dos recursos do aplicativo com as opções que você habilitou para o ID do aplicativo em sua conta de desenvolvedor.

KavyaKavita
fonte
É um aplicativo gratuito e não habilitei nada, o que é muito frustrante. Ele é instalado perfeitamente no meu dispositivo, mas não sei onde procurar.
Paul Raymond
você pode compartilhar imagens de ambos?
KavyaKavita
do que você quer uma captura de tela?
Paul Raymond
captura de tela da seção de recursos e configuração de ID do aplicativo em uma conta de desenvolvedor
KavyaKavita
0

Tentei algumas opções listadas nas respostas aqui, mas nenhuma ajudou. No entanto, alternar a caixa de seleção "Gerenciar automaticamente a assinatura" e desligar corrigiu o problema.

john316
fonte
0

TL; DR: verifique o ID do seu aplicativo e certifique-se de que os serviços correspondem ao que está em seu destino.


O que aconteceu comigo foi que deixei o Xcode 10.1 me ajudar a criar um ID de aplicativo e, depois disso, encontrei o problema descrito aqui. (Eu selecionei o ID do aplicativo whildcard quando criei o aplicativo no iTunesConnect, então nem percebi que isso foi feito.) Quando abri o portal do desenvolvedor iOS, o novo ID do aplicativo tem Game Center e In App Purchase ativados automaticamente.

Como não consegui habilitar o Game Center no seu Target -> Capabilities, habilitei In App Purchase e, em seguida, meu aplicativo pôde ser assinado e carregado.

superarts.org
fonte
0

Quando enfrentamos o mesmo problema, tentamos todas as coisas acima, mas nada funcionou.

O que funcionou para nós foi alterar o identificador do pacote para que não fosse idêntico ao anterior, por exemplo "com.name.App" para "com.name.App2"; deixe o xcode tentar buscar / criar o perfil de provisionamento e, em seguida, alterá-lo para o original.

Tive essa ideia a partir deste tópico nos fóruns de desenvolvedores da Apple- https://forums.developer.apple.com/thread/114539

Akshay Raje
fonte
0

Eu encontrei esta página recentemente depois de tentar criar um destino duplicado - nenhuma das sugestões estava funcionando para mim. Uma investigação mais aprofundada e um pouco de puxão de cabelo eventualmente me levaram a vasculhar as configurações de compilação do meu aplicativo para tentar descobrir o que estava errado.

Acontece que meu projeto ainda estava apontando para o arquivo de direitos do destino ORIGINAL, ao invés de ter um próprio. Para resolver isso, naveguei até o arquivo de direitos original no Finder (por exemplo, $ {SRCROOT} /MyProject/Entitlements/TargetName.entitlements ), criei uma cópia dentro da mesma pasta e a renomeei (por exemplo, NewTargetName.entitlements).

Em seguida, abri meu novo arquivo de direitos e alterei o campo do identificador do aplicativo para corresponder ao final do identificador de pacote do meu novo destino (por exemplo, ABCDEFGH.US.co.fake-company.superduperapp-newtargetname ).

Por fim, atualizei o campo 'Code Signing Entitlements' nas configurações de compilação para o caminho do meu arquivo de direitos (para mim, era algo próximo a $ {SRCROOT} /MyProject/Entitlements/TargetName.entitlements ).

Voltei para a guia Signing & Capabilities e, eis que o problema foi corrigido. Espero que alguém por aí ache isso útil.

Strafe86
fonte
0

Vá para a guia Info do Xcode e altere o campo Bundle identifier - depois de alterar o nome do aplicativo, ele não mudou, embora eu tenha alterado o Bundle Identifier na guia General. As correções acima não funcionaram para mim, mas esta funcionou instantaneamente.

Hardfi
fonte
0

Tive esse problema com um aplicativo totalmente novo, no Xcode 12 beta 3 (os envios de aplicativos começaram hoje ).

O Xcode tinha a opção "Gerenciar automaticamente o login". No entanto, a ID da equipe exibida no "Certificado de assinatura" não correspondia à ID da equipe exibida no site iTunes Connect. Essa era a causa raiz que impedia o upload do aplicativo.

Como eu consertei:

  1. Eu criei manualmente um perfil de provisionamento para distribuição na App Store
  2. No Xcode, toquei em "Baixar perfis manuais" em Preferências -> Conta
  3. Em seguida, desliguei "Gerenciar automaticamente a assinatura".
  4. Depois de selecionar o perfil de provisionamento na lista suspensa, o ID de equipe correto apareceu em "Certificado de assinatura"
Eneko Alonso
fonte
0

Encontrei o mesmo problema ao configurar um pipeline Gitlab que executa exportArchive cmd e carrega para AppStore. Consegui fazê-lo funcionar alterando o DEVELOPMENT_TEAM em Build Settings para a mesma equipe selecionada em Signing & Certs.

Porque anteriormente estava definido como em branco que estava usando outro id DEV TEAM por padrão que estava incorreto e não correspondia e estava reclamando do "identificador do aplicativo" = 12331232.com.bannana.apples.peach não corresponder. O que me levou a definir o DEV TEAM correto e funcionou.

Xcode ver: Versão 11.3.1

Espero que isso ajude alguém.

Jamal
fonte
0

Nossa configuração

Múltiplos alvos:

  • sub-aplicativos
  • Assistir
  • clipe de aplicativo
  • widget de hoje

... e use o iCloud.

Ligar e desligar o iCloud não era uma opção para nós. Já a usamos na produção e preferimos não mexer com ela ... Recebi a mensagem da pergunta original e esta variação em algum momento também:

O perfil não corresponde aos valores do arquivo de direitos para os direitos de identificador de aplicativo e grupos de acesso de keychain.

Solução

Com base em outras respostas aqui, garantimos que todos os destinos teriam um .entitlementsarquivo. Se o alvo não tivesse nenhum, criamos um vazio como:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict/>
</plist>

... e apontou-alvo Code Signing Entitlementem Build Settingsque o vazio .entitlementsarquivo.

Resolvido!

Andres Canella
fonte
0

Exclua todos os perfis localizados em ~/Library/MobileDevice/Provisioning Profiles/

PerfectGamesOnline.com
fonte
0

Estou desenvolvendo um aplicativo Flutter com Flavors que usa o comando --dart-define. Fiquei muito inspirado por este ótimo artigo .

No entanto, encontrei esse problema de 'identificador de aplicativo' durante a implantação. Eu tentei muitas opções. Esta solução é a que funcionou para mim. É muito parecido com o comentário de @ n8tr , mas a diferença era o 'ao invés'.

Para retomar, basta definir o Identificador do Pacote de Produtos como your.id.here$(DEFINEEXAMPLE_APP_SUFFIX)Embalagem nas Configurações de Compilação em vez de em Info.plist.

Nicolas Youpi
fonte