Erro de design do código: o perfil de provisionamento não pode ser encontrado após a exclusão do perfil expirado

StackOverflow https://stackoverflow.com/questions/1760518

Pergunta

Tentei reconstruir um aplicativo que estava funcionando ontem. Recebi uma 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: o perfil de provisionamento (string longo) não pode ser encontrado.

o que estou perdendo? Eu olhei através de perguntas relacionadas e ainda não vi esse cenário.

Foi útil?

Solução

Às vezes, o seu arquivo de projeto Xcode fica confuso, especialmente se você tiver um projeto antigo e o criou pela primeira vez 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, pesquisar a 'string longa' do seu erro e apagar manualmente essa linha. De fato, você deve apenas seguir em frente e apagar qualquer linha que aponte para quaisquer perfis de provisionamento. Em seguida, reabra o projeto no Xcode, vá para as configurações e selecione seu novo perfil. Isso esclarece questões como esse na maioria das vezes. As linhas que apontam para os perfis de provisionamento ficarão assim:

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

Outras dicas

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", expandir "metas" e clique duas vezes na meta do seu aplicativo. Isso traz à tona o painel de informações para o alvo. Na seção "Build", verifique a seção "Assinatura de código" para obter perfis antigos e substitua o correto.

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

Ori

  1. Propriedades do projeto e direcionamentos -> "Não codifique o sinal" -> ok -> cmd+s (ou cmd+b);
  2. Propriedades do projeto e direcionamentos -> "Seu perfil de provisão" -> ok

  3. Tudo funciona de novo!

Concordo com a resposta de Brad, que você pode corrigir esse problema editando seu alvo/projeto manualmente, excluindo todas as 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, há uma maneira muito mais fácil de acessar este texto e selecioná -lo e excluí -lo. No navegador do projeto à esquerda, selecione seu projeto (a linha superior do navegador do projeto). Agora basta escolher View> Version Editor> Mostrar editor de versão. Isso exibe seu projeto como texto e você pode procurar provisionamento e excluir a linha problemática, bem ali no painel editor do Xcode.

Acabei de ver uma variação sobre esse assunto: entrei no projeto Project.pbxproj, conforme as anotações de Brad Smith acima, exceto neste caso todas as linhas de provisioning_profile pareciam estar corretas, sem ocorrência da sequência de perfil "ruim" que o Xcode não podia Encontre.

No entanto, a correção era a mesma: excluir todas as linhas de provisioning_profile no Project.pbxProj, mesmo que parecessem "boas" em teoria e depois reabrir o projeto no Xcode.

Para alcançar a solução de Brad inteiramente no terminal, use esses comandos

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

No meu caso, o problema foi resolvido pela janela de abertura -> Organizador, selecionando meu dispositivo e removendo o antigo perfil de provisionamento no painel "provisionamento" à 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 o novo estava aparecendo (com o mesmo nome) e, depois de simplesmente relançar o aplicativo, eu o fiz funcionando sem problemas.

Acabei de passar 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 no seu myapp.xcodeproj e selecione o conteúdo do pacote

2) aberto project.pbxproj com um editor de texto (não recomendo o texto, pois pode estragar a formatação)

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

4) Observe que você tem seções de depuração e liberação

5) Na seção de liberação, dê uma olhada em CODE_SIGN_IDENTITY & "CODE_SIGN_IDENTITY[sdk=iphoneos*]" deve parecer algo assim:

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

6) Dê uma olhada em PROVISIONING_PROFILE e "PROVISIONING_PROFILE[sdk=iphoneos*]" Eles deveriam 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 ver se eles correspondem ao XCODE OPEN> Janela> Organizador> Dispositivos> Perfis de provisionamento> Clique com o botão direito do mouse no perfil> Revelação no Finder> O nome do arquivo do .MobileProvision é o seu ID de perfil.

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

8) Certifique -se de que a segunda seção corresponda à primeira seção para que CODE_SIGN_IDENTITY, "CODE_SIGN_IDENTITY[sdk=iphoneos*], e PROVISIONING_PROFILE estão todos preenchidos.

Uma sugestão farei, já que ninguém ainda o disse: Por favor, faça um backup de todo o seu arquivo .xcodeproj antes de começar a modificar seu conteúdo. Estranhar o arquivo do projeto e não ter backup levará a uma experiência muito desagradável.

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

Acabei de encontrar esse problema no meu xcode4. Para corrigi -lo, você precisa colocar todas as provisões corretas na configuração de depuração e liberação.

Eu estava tentando enviar (arquivando) meu aplicativo. Por isso, apenas altero as disposições de depuração para "não codificar o sinal" e a provisão de lançamento para a provisão de aplicativos do meu aplicativo.

Isso conserta e me permite arquivar normalmente. Espero que ajude.

Selecione as linhas no código que estão em branco em qualquer SDK do iOS e selecione o certificado certo.

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

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

Eu voltei para uma versão de trabalho do meu arquivo de projeto. Como não é possível reverter com o Xcode (Onde está a opção 'reverter' no controle de origem do Xcode 4?) - Eu usei a tartaruga, minha máquina Windows e este tutorial (http://tortoisesvn.net/docs/nightly/tortoisesvn_en/tsvn-howto-rollback.html) voltar para um arquivo de projeto mais antigo.

Como o tutorial não deu certo para mim, eu apenas usei a tartaruga para salvar a revisão de trabalho do meu arquivo de projeto em um adereço USB para transportá -lo para o meu Mac. Depois disso, substituí o novo arquivo de projeto quebrado por um antigo trabalho, limpo e funcionou como um charme!

Eu estava tendo problemas porque atualizei meu perfil de provisionamento do ADHOC com alguns novos dispositivos para uso no Testflight. Supuvelmente isso está acontecendo porque o Xcode tem uma referência antiga ao seu perfil de provisionamento nas configurações de compilação de design do código para o projeto ou para os alvos. A maneira como eu consertei o meu era:

  1. Vá para as configurações de construção de destino e as configurações de construção do 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 ofensivos e clique no botão Atualizar no canto inferior direito.
  3. Volte para as configurações de construção de alvo e projeto e defina seus perfis de provisionamento para os perfis de provisionamento apropriados (espero) recém -atualizados.

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

No perfil de provisionamento, selecione o perfil de provisionamento ofensivo e selecione um perfil de provisionamento válido no menu pull-down.

enter image description here

Você pode remover a referência antiga do arquivo de provisionamento. Depois de importar o novo perfil de provisionamento e selecionar o Xcode Builder.

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