Erro de codificação: o perfil de provisionamento não pode ser encontrado após a exclusão do perfil expirado

500

Tentei reconstruir um aplicativo que estava funcionando ontem. Recebi a mensagem de que um perfil havia expirado, então eu o removi do iPod e do iTunes. Quando escolhi um novo perfil (um com um * no identificador), agora recebo um erro:

Erro de sinal de código: Não foi possível encontrar o perfil de provisionamento (cadeia longa).

o que estou perdendo? Examinei as questões relacionadas e ainda não vi esse cenário.

quantumpotato
fonte

Respostas:

856

Às vezes, seu arquivo de projeto do xcode fica confuso, especialmente se você tem um projeto antigo e o criou primeiro com uma versão mais antiga do xcode / iphone sdk. O que você precisa fazer é abrir o arquivo do projeto em um editor de texto, procurar a 'string longa' do seu erro e apagar manualmente essa linha. Na verdade, você deve apenas prosseguir e apagar qualquer linha que aponte para qualquer perfil de provisionamento. Em seguida, reabra o projeto no xcode, acesse as configurações e selecione novamente o seu novo perfil. Isso esclarece questões como essa na maioria das vezes. As linhas que apontam para os perfis de provisionamento terão a seguinte aparência:

PROVISIONING_PROFILE = "487F3EAC-05FB-4A2A-9EA0-31F1F35760EB";
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "487F3EAC-05FB-4A2A-9EA0-31F1F35760EB";
Brad The App Guy
fonte
210
O arquivo .xcodeproj é na verdade um diretório, como um pacote de aplicativos. Se você clicar com o botão direito do mouse no localizador, poderá selecionar mostrar o conteúdo do pacote e verá vários arquivos dentro (ou no terminal, apenas o CD). O arquivo de projeto real é aquele com uma extensão .pbxproj. Depois de abrir com um editor de texto, as linhas que você procura devem começar com 'PROVISIONING_PROFILE = ou' '"PROVISIONING_PROFILE [sdk = iphoneos *]" ='. Exclua tudo isso e então você deve ser bom.
Brad The App Guy
2
Descobri que, além do acima, eu tinha que excluir todos os meus perfis, fazer o download novamente do portal de provisionamento e reimportá-los para o XCode. Em seguida, em Configurações de compilação / assinatura de código, selecione o perfil adequado para todas as configurações de compilação.
Jay Imerman
11
Ainda um conselho valioso com o XCode4 em 2012. Obrigado!
Alexey Rusakov
6
... aaaa e ainda conselhos valiosos com o Xcode6 em 2014! Muito obrigado!
Tom van Zummeren
4
A única coisa que funcionou para mim: Preferências -> Contas -> Ver detalhes -> Atualizar. Isso recarregou todos os perfis de provisionamento do portal de desenvolvimento. Espero que isso ajude alguém
blackhawk4152
129

Aqui está uma solução mais simples que funcionou para mim e que não requer a edição manual do arquivo do projeto:

No XCode, no painel "Grupos e arquivos", expanda "Destinos" e clique duas vezes no destino do seu aplicativo. Isso abre o painel Informações para o destino. Na seção "Compilar", verifique a seção "assinatura de código" quanto a perfis antigos e substitua pelo correto.

Observe que isso é diferente de clicar duas vezes no ícone do seu projeto e alterar o perfil a partir daí. Bastante surpreendente :)

Ori

Ori
fonte
1
Obrigado! Vou tentar isso na próxima vez que isso acontece :)
quantumpotato
6
e certifique-se de selecionar a configuração de compilação na primeira à direita :)
johnus
1
Isso nem sempre funciona. Às vezes, você ainda precisa alterá-lo manualmente, como mostra a primeira resposta.
SpaceTrucker 30/09
Apenas mais uma observação para ecoar o SpaceTrucker: esse método nem sempre funciona. A resposta aceita garante que o Xcode deixará de procurar esse perfil fantasma.
Simone Manganelli
Descobri que, além do acima, eu tinha que excluir todos os meus perfis, fazer o download novamente do portal de provisionamento e reimportá-los para o XCode. Em seguida, em Configurações de compilação / assinatura de código, selecione o perfil adequado para todas as configurações de compilação.
Jay Imerman
76
  1. Propriedades do projeto e destinos -> "Não codifique sinal" -> OK -> cmd + S (ou cmd + B);
  2. Propriedades do projeto e destinos -> "Seu perfil de provisionamento" -> OK

  3. Tudo funciona de novo!

user732414
fonte
4
Esta é a única solução que funcionou para mim (usando o XCode4). Criar o aplicativo com "Não codifique o sinal" selecionado foi uma etapa obrigatória para mim.
Chazbot
Essa parece ser uma solução melhor do que aquela com mais de 200 upvotes, porque o Xcode pode mudar a maneira como ele grava seu arquivo de projeto no futuro.
Danyal Aytekin 02/12/19
1
Esta é a sollution correto, o que funcionou para mim no Xcode 4.2
Selvin
10

Concordo com a resposta de Brad, de que você pode resolver esse problema editando seu destino / projeto manualmente, excluindo quaisquer linhas como esta:

PROVISIONING_PROFILE = "487F3EAC-05FB-4A2A-9EA0-31F1F35760EB";
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "487F3EAC-05FB-4A2A-9EA0-31F1F35760EB";

No entanto, no Xcode 4.2 e posterior, existe uma maneira muito mais fácil de acessar esse texto e selecioná-lo e excluí-lo. No Navegador de projeto à esquerda, selecione seu projeto (a linha superior do Navegador de projeto). Agora basta escolher Exibir> Editor de Versão> Mostrar Editor de Versão. Isso exibe seu projeto como texto e você pode procurar por PROVISIONING e excluir a linha problemática, bem ali no painel do editor do Xcode.

mate
fonte
Após isso, você não precisa fechar e abrir o projeto. Melhor abordagem :)
viral
6

Acabei de ver uma variação sobre esse problema: Entrei no arquivo project.pbxproj conforme as notas de Brad Smith acima, exceto que neste caso todas as linhas PROVISIONING_PROFILE pareciam estar corretas, sem ocorrência da cadeia de perfil "ruim" que o XCode não conseguiu. encontre.

No entanto, a correção foi a mesma: excluir TODAS as linhas PROVISIONING_PROFILE em project.pbxproj, mesmo que parecessem "boas" em teoria, e reabrir o projeto no XCode.

theevank
fonte
4

Para obter a solução de Brad inteiramente no Terminal, use estes comandos

  1. cd [Xcode project parent]
  2. vi [Xcode project name].xcodeproj/project.pbxproj
  3. /[offending provisioning profile] [Enter]
  4. dd - excluir a linha inteira
  5. Pressione n até que não sejam mais encontradas
  6. Ctrl + x para salvar e fechar
MechEngineer
fonte
3

No meu caso, o problema foi resolvido abrindo Window -> Organizer, selecionando meu dispositivo e removendo o antigo Perfil de provisionamento no painel "Provisioning" à direita. O antigo já estava marcado com um símbolo "x" vermelho, mas o iPhone ainda o estava usando.

Além desse perfil, também estava aparecendo o novo (com o mesmo nome) e, depois de simplesmente reiniciar o aplicativo, eu o executava sem problemas.

stack-o-frankie
fonte
+1, às vezes não consigo instalar porque um perfil expirou - nem mesmo com o mesmo identificador! - estava no meu dispositivo.
Quantumpotato
Este funcionou para mim, mas eu também tive que reiniciar o XCode para fazê-lo funcionar.
29511 Matt
3

Apenas passei uma hora fazendo isso e com a ajuda dos conselhos de Brad e algumas mudanças adicionais tudo funcionou.

Eu fiz isso usando o seguinte: 10.7.3, Xcode 4.3.2, iOS 5.1 btw.

1) Clique com o botão direito do mouse myapp.xcodeproje selecione o conteúdo da embalagem

2) abra project.pbxprojcom um editor de texto (não recomende o textedit, pois isso pode estragar a formatação)

3) Role todo o caminho até encontrar /* Begin XCBuildConfiguration section */

4) Observe que você possui uma seção de depuração e liberação

5) Na seção de lançamento, dê uma olhada CODE_SIGN_IDENTITYe "CODE_SIGN_IDENTITY[sdk=iphoneos*]"deve ser algo como isto:

CODE_SIGN_IDENTITY = "iPhone Distribution: MyCompany LLC";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution: MyCompany LLC";

6) Dê uma olhada PROVISIONING_PROFILEe "PROVISIONING_PROFILE[sdk=iphoneos*]"eles devem ficar assim:

PROVISIONING_PROFILE = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX";
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX";

Isso deve corresponder ao seu perfil de provisionamento no Xcode. Para verificar se eles correspondem, abra Xcode> Janela> Organizador> Dispositivos> Perfis de provisionamento> Clique com o botão direito do mouse no perfil> Revelar no Finder> O nome do arquivo da provisão .mobile é o seu ID de perfil.

7) Role para baixo project.pbxproje encontre uma segunda instância da seção de liberação. A segunda instância da seção de lançamento deve terminar com um comentário dizendo/* End XCBuildConfiguration section */

8) ter certeza de que a segunda seção corresponde a primeira seção de modo que CODE_SIGN_IDENTITY, "CODE_SIGN_IDENTITY[sdk=iphoneos*], e PROVISIONING_PROFILEestão todos preenchidos.

bobbypage
fonte
2

Uma sugestão que eu faço desde que ninguém o tenha dito: FAVOR FAVOR, faça um backup de todo o seu arquivo .xcodeproj ANTES de começar a modificar o conteúdo. Estragar o arquivo do projeto e não ter backup resultará em uma experiência muito desagradável.

Ser capaz de sair de uma edição pode ser uma dádiva de Deus.

Richard Brown
fonte
Sim, é por isso que os deuses do SCM fizeram o controle da fonte.
Br.Bill
1

Acabei de encontrar esse problema no meu XCode4. Para corrigi-lo, você precisa colocar todas as disposições corretas nas configurações de Debug e Release.

Eu estava tentando enviar (arquivando) meu aplicativo. Então, apenas altero as provisões de depuração para "Não codifique o sinal" e a provisão de lançamento para a provisão de appstore do meu aplicativo.

Isso corrige e permite arquivar normalmente. Espero que ajude.

GeneCode
fonte
1

Selecione as linhas na assinatura de código que estão em branco em Qualquer iOS SDK e selecione o certificado correto.

sunkencity
fonte
1

A solução de Brad Smith funcionou para mim, mas também tive que remover o campo CODE_SIGN_IDENTITY para fazê-lo funcionar.

jean_jean
fonte
Isso é feito manualmente, modificando o arquivo do projeto xcode em um editor de texto, e muitas vezes tive que fazer isso para continuar novamente quando chego a um estado de falha. Conhecer as duas coisas que podem ser removidas geralmente é muito útil. Bom ponto.
Warren P
0

Infelizmente, essa abordagem não funcionou para mim. Mas aqui está uma correção que funcionou para mim (para que isso funcione, você precisa de um arquivo de projeto em funcionamento no Subversion):

Voltei a uma versão funcional do meu arquivo de projeto. Como não é possível reverter com o Xcode ( Onde está a opção 'Revert' no Source Control do Xcode 4? ) - usei o Tortoise, minha máquina Windows e este Tutorial ( http://tortoisesvn.net/docs/nightly/TortoiseSVN_en /tsvn-howto-rollback.html ) para reverter para um arquivo de projeto mais antigo.

Como o Tutorial não funcionou para mim, eu apenas usei o Tortoise para salvar a revisão de trabalho do meu arquivo de projeto em um pendrive para portá-lo no meu Mac. Depois disso, substituí o novo arquivo de projeto quebrado pelo antigo, limpo e funcionou como um encanto!

Chris Conway
fonte
0

Eu estava com problemas porque atualizei meu perfil de provisionamento AdHoc com alguns novos dispositivos para uso no TestFlight. Supõe-se que isso esteja acontecendo porque o xcode tem uma referência antiga ao seu perfil de aprovisionamento nas configurações de criação de design de código para o projeto ou nos destinos. A maneira que eu consertei o meu era:

  1. Vá para as configurações de construção de destino e de projeto, Em assinatura de código, altere todos os perfis de provisionamento para outra coisa.
  2. Vá para dispositivos / perfis de provisionamento no organizador, exclua os perfis incorretos e clique no botão Atualizar no canto inferior direito.
  3. Volte para as configurações de construção de destino e projeto e defina seus perfis de provisionamento para os perfis de provisionamento apropriados (espero) recém-atualizados.
George McKibbin
fonte
0

Pelo menos no Xcode 5, é isso que resolveu o problema para mim:

Em perfil de provisionamento, selecione o perfil de provisionamento incorreto e selecione um perfil de provisionamento válido no menu suspenso.

insira a descrição da imagem aqui

RawMean
fonte
0

Você pode remover a referência antiga do arquivo de provisionamento. Depois, importe o novo Perfil de fornecimento e selecione o construtor Xcode.

annu
fonte