Depuração do iPhone: Como resolver 'falha ao obter a tarefa para o processo'?

158

Acabei de adicionar um perfil de provisionamento ao XCode (necessário para dar suporte a notificações e na compra de aplicativos), configurar conforme necessário a configuração de compilação para distribuição ad hoc e tentei executá-lo no dispositivo (já fiz isso várias vezes no passado , sem qualquer problema).

O aplicativo está instalado, mas não é iniciado. No console, vejo a seguinte mensagem:

Error launching remote program: failed to get the task for process 82.
Error launching remote program: failed to get the task for process 82.
The program being debugged is not being run.
The program being debugged is not being run.

No entanto, se eu iniciar o aplicativo no dispositivo manualmente, ele funcionará conforme o esperado. Eu instalei recentemente o XCode 3.2 mais recente para o Snow Leopard. Isso é um bug conhecido desta versão do XCode ou estou fazendo algo errado?

EDIT: Funciona bem com a distribuição de release usando o perfil de provisionamento de desenvolvimento. Verifiquei novamente o perfil de provisionamento ad hoc para garantir que ele inclua o dispositivo que estou usando.

Massimo Cafaro
fonte
isso também pode ajudar: vá para Organizador -> Projetos -> DerivedData excluir e limpar. Certifique-se de todas as contratações no Project e Target são definidas de forma consistente e correta - isso ajudou no meu caso ....
user387184

Respostas:

110

Ocorreu um problema ao depurar binários no dispositivo via XCode quando o aplicativo inclui um arquivo Entitlements.plist, que não é necessário instalar no dispositivo para depuração. Em geral, incluí este arquivo para compilações de versões (onde é necessário para a App Store) e o removi para depuração (para que eu possa depurar o aplicativo do XCode). Esse pode ser o seu problema aqui.

Atualização : a partir de (pelo menos) agosto de 2010 (iPhone 4.1 SDK), o Entitlements.plist não é mais necessário incluir em seu aplicativo em muitos casos (por exemplo, distribuição na App Store.) Consulte aqui para obter mais informações sobre os casos quando É necessário Entitlements.plist:

IMPORTANTE: Geralmente, um arquivo de direitos é necessário apenas na criação para a Distribuição Ad Hoc ou na ativação do compartilhamento de dados do Keychain. Se nenhuma dessas opções for verdadeira, exclua a entrada em Direitos de assinatura de código. (ênfase minha)

fbrereto
fonte
Você está certo, verifiquei que é realmente o valor booleano get-task-allow definido como false no Entitlements.plist que impede a depuração. Obrigado.
Massimo Cafaro 29/09/09
1
Para sua informação, tive exatamente o mesmo problema e o que resolveu o problema foi ADICIONAR o arquivo de autorização com o get-task-allow definido como YES ... portanto, se você tiver o mesmo problema e o arquivo de direitos, tente adicioná-lo ...: P
Alex Zak
No iOS 8.1.3, entitelments.plist também é necessário para aplicativos assinados pela empresa.
Roy K
289

O perfil ad-hoc não suporta depuração. Você precisa depurar com um perfil de desenvolvimento e usar o perfil Ad-Hoc apenas para distribuir cópias não depuráveis.

cdespinosa
fonte
Que eu saiba, não vi essas informações no portal do programa de desenvolvimento. Mas meu comentário para fbrereto explica por que é assim: não temos o arquivo Entitlements.plist nem nas configurações de depuração nem nas versões.
Massimo Cafaro 29/09/09
5
Eu tive o mesmo problema depois que eu acidentalmente definir a identidade de assinatura de código para a distribuição do iPhone no Xcode 4
cpungaliya
1
como faço para mudar a parte de trás do perfil para depuração se eu basta clicar em "start"
spankmaster79
Apenas mais uma dessas pequenas armadilhas que a Apple colocou para você. Acabei de fazer isso depois de refazer todos os meus perfis e certs graças a um bug do portal ... suspiro. Obrigado pela informação, corrigido o meu problema.
N13 02/04/19
Esta foi a resposta para o meu problema. Não tinha nada a ver com direitos.
DOOManiac
37

Eu tive o mesmo problema, mas o resolvi seguindo as seguintes etapas simples:

  1. Certifique-se de ter selecionado depuração em vez de liberação.
  2. Nas configurações de depuração, nas configurações do projeto, você deve ter selecionado o perfil do desenvolvedor e não há necessidade de especificar a lista de direitos.
  3. Também a mesma configuração existe em: Destinos:, se não for manual, altere-os para o acima para a configuração de depuração. Vai funcionar.

Muito bem sucedida.

Aks
fonte
A razão pela qual isso funcionou é quase certamente que sua configuração de Debug possui o get-task-allow definido em Entitlements.plist, enquanto o Release 1 não - isso é para impedir que as pessoas conectem o depurador à cópia que obtêm na App Store (consulte também a resposta de Kai abaixo sobre a configuração para Sim para obtê-lo para o trabalho ..)
dsmudger
Fez isso por mim. De alguma forma, a compilação foi definida como 'release' e os perfis de release não foram configurados corretamente.
KPK
19

Demorei um pouco para descobrir.

Se você estiver usando uma distribuição / ad hoc / perfil, não poderá testá-lo através do xcode. Você receberá o erro: O programa que está sendo depurado não está sendo executado.

Você pode criar o aplicativo, ir para a pasta de produtos no seu aplicativo no xcode, clicar no arquivo com o nome do seu projeto e escolher revelar no localizador. Você pode arrastar esse aplicativo para o iTunes e sincronizar e, nesse ponto, pode testar seu aplicativo no seu dispositivo.

Atma
fonte
Sim, este foi o meu problema. Eu não tinha nenhum arquivo de direitos, mas havia mudado minha configuração de compilação de depuração para um perfil de distribuição. Mudar para um perfil de desenvolvimento corrigia tudo.
vocaro 5/09/11
1
Eu gostaria que o XCode fosse mais aberto sobre isso. Não é óbvio que você não possa testar uma distribuição distribuída em um dispositivo enquanto estiver conectado ao XCode. É um caso de uso comum.
User798719
13

Se você estiver recebendo esse erro, o único motivo pode ser o uso de um perfil de Distribuição em vez de um perfil de desenvolvimento no Xcode ou uma propriedade de Titularidade ausente. Se você não estiver usando o Entitlements.plist, o único erro possível pode ser que o aplicativo esteja sendo empacotado com um perfil de distribuição. Você pode verificar isso confirmando os logs de construção. Para alterar isso, vá para Build Setting do projeto e verifique a configuração da Entidade de assinatura de código. Para que a depuração funcione, essa configuração deve ser um perfil de desenvolvedor para a configuração que você está usando no momento.

https://developer.apple.com/library/ios/#qa/qa1682/_index.html

Para resultados instantâneos, exclua todos os perfis de provisionamento móvel do xcode e instale o perfil de desenvolvedor que você pretende usar.

Varun Bhatia
fonte
13

Quase duas horas sobre esta questão! E finalmente resolvi substituindo o

Desenvolvedor iPhone

para

Desenvolvedor do iPhone: Nome da minha conta de desenvolvedor

para depuração CODE_SIGN_IDENTITY:

  1. Selecionar destino do projeto
  2. Configurações de compilação
  3. Pesquise por "código"
  4. Modifique a linha de depuração da seção CODE_SIGN_IDENTITY com "iPhone Developer: Meu nome de conta de desenvolvedor" , não apenas "iPhone Developer" .

Eu não tenho idéia do por que funciona, mas funciona! Pelo menos para mim!


Ambiente: Xcode 5.0 (5A1412).

Kjuly
fonte
isso funcionou para mim também, obrigado. teve que mexer exatamente com quais identidades usar, mas acabou gostando de uma certa combinação. O Xcode 6 realmente precisa de um recurso de "correção automática" para esse tipo de coisa, muitas tarefas domésticas para as quais não tenho tempo !!
John Contarino
1
Só para adicionar a isso o que fiz foi semelhante, mas diferente - mudei o perfil para ser o perfil da equipe (que é usado para depuração), que definiu o assinante de código como "automático" - no XCode 5+ você realmente deveria ser selecionando o perfil para uma construção e deixando decidir qual assinante usar com base nisso.
Kendall Helmstetter Gelner
@KendallHelmstetterGelner thx, isso pode ser útil para outras pessoas! : D
Kjuly
Também deve adicionar I mudou o perfil da equipe para a compilação "depuração", que é usada para executar no dispositivo de no XCode (a menos que você alterar as configurações do esquema)
Kendall Helmstetter Gelner
1
Isso resolveu meu problema com esse problema sem fazer nada além de reconstruir com uma identidade de assinatura de código diferente. Obrigado! No meu caso, eu estava usando uma identidade de distribuição ad-hoc.
Sean Michael Dorian
12

Verifique sua seção de assinatura de código. Verifique se a assinatura de código é iPhoneDeveloper code signe

user1770342
fonte
Isso aconteceu - por alguma razão no meu Target, o 'Time' mudou para 'None' - alterá-lo novamente. Cheers
Ralpharoo
9

Abra Entitlements.plist e defina o valor booleano get-task-allow como YES - o depurador pode anexar agora!

Kai
fonte
ya, eu tentei isso muitas vezes e não entendo por que não corrige o problema. este seria o melhor método se você ainda queria incorporar testflightapp
owen Gerig
O meu esquema de execução está definido para depuração. Somente esta solução corrigiu para mim! Obrigado.
Pieter
Obrigado É realmente me ajudar!
Amir Hudani
4

Vá para Editar esquemas e, em Executar -> Informações -> Configuração da compilação, mude de Ad-Hoc para Depurar. Clique em OK para salvar.

Arunabh Das
fonte
1

Pode ser que você tenha um perfil de desenvolvimento expirado no seu telefone.

Meu perfil de provisionamento de desenvolvimento expirou há alguns dias e tive que renová-lo. Instalei o novo perfil no meu telefone e recebi a mesma mensagem de erro quando tentei executar meu aplicativo. Quando examinei as configurações do perfil no meu telefone, notei o perfil expirado e o removi. Isso esclareceu o erro para mim.

hkatz
fonte
1

Recebi esse erro ao tentar iniciar o aplicativo a partir do Xcode, pois achei que havia selecionado apenas o perfil de distribuição. A compilação foi bem-sucedida, então eu criei o arquivo .ipa. Eu usei testflightapp.com para executar o aplicativo. Você também pode usar o iTunes.

cornetim
fonte
1

Conforme declarado pelo Buffernet, você não pode usar um perfil de provisionamento de distribuição para depurar. Quando mudei para um perfil de provisionamento de desenvolvedor, recebi o erro "Não foi encontrado um perfil de provisionamento válido para este executável".

Um rápido google para isso me levou ao artigo listado abaixo. A partir daí, percebi que não tinha um perfil de provisionamento de desenvolvimento válido, já que meu iPhone não havia sido adicionado ao Portal de provisionamento e todas as outras coisas envolvidas.

Certifique-se de executar um perfil de provisionamento de desenvolvedor do iPhone e seu dispositivo foi adicionado ao portal de provisionamento!

http://iosdevelopertips.com/xcode/a-valid-provisioning-profile-for-this-executable-was-not-found.html

Jarada
fonte
0

Sim, os perfis de provisionamento que são para fins de distribuição, ou seja, os perfis de provisionamento de distrações não suportam depuração e fornecem esse erro. Simplesmente crie e use o perfil de provisionamento de depuração (cuide disso ao criar o perfil de provisionamento da conta developer.apple.com).

Rakesh
fonte
0

Acabei de alterar o nome do meu bundleIdentifier, que parecia funcionar.

Joe Barbour
fonte
-1

Corrigi meu projeto com o JailCoder http://jailcoder.com/ e o problema foi resolvido. Basta fazer o download e arrastar o seu projeto xcode para ele.

Andrés Canavesi
fonte