Um dispositivo apenas de construção não pode ser usado para executar este alvo

86

Recebo este erro quando tento testar um aplicativo.

Um dispositivo somente de construção não pode ser usado para executar este destino.

Nenhum dispositivo iOS compatível está disponível. Conecte um dispositivo para executar seu aplicativo ou escolha um dispositivo simulado como destino.

yrpalnoob
fonte
Se você usa um dispositivo e tem sua conta de desenvolvedor da apple, exclua o aplicativo do seu dispositivo e execute-o.
BollMose

Respostas:

78

adicionar -destination 'platform=iOS Simulator,name=iPhone 6,OS=9.3'ao seuxcodebuild

Quver
fonte
7
Explicação: Xcode tenta construir com o dispositivo iOS genérico, mas o teste deve ser construído no simulador.
Adriana
7
Um comando completo e funcional:xcodebuild test -project YourProject.xcodeproj -scheme YourProject -destination 'platform=iOS Simulator,name=iPhone 6,OS=9.3'
Jianxin Gao
/ usr / bin / xcodebuild é um arquivo binário. Você provavelmente não deve modificá-lo.
Por Quested Aronsson de
Por que você deseja modificá-lo?
Quver
Você não precisa adicionar isso em xcodebuild. Tudo que você precisa é executar este comando com parâmetros
Quver
44

Talvez o esquema tenha mudado para um dispositivo genérico. Tente escolher novamente o dispositivo conectado no menu Esquema:

Imagem do menu

Cue
fonte
18

Abaixo está o meu caminho

Selecione projeto -> Geral -> Informações de implantação -> Destino de implantação -> escolha uma versão inferior insira a descrição da imagem aqui

米米米
fonte
1
Este caso é útil quando você importa um projeto com destino de implantação superior ao seu destino de implantação local,
diminuí-
7

Encontro um problema em que apenas "Dispositivo iOS genérico" pode ser escolhido. e quando eu corro, ele diz "Um dispositivo apenas de construção não pode ser usado para executar este alvo. Nenhum dispositivo iOS compatível está disponível. Conecte um dispositivo para executar seu aplicativo ou escolha um dispositivo simulado como destino"

e minha solução para o problema é selecionar Build Settings ---> Deployment -----> IOS Deployment Target ----> escolher uma versão inferior como 8.0,

e descobri que o simulador saiu e pode ser escolhido.

Mr.yl
fonte
Você tem simuladores com a versão mais recente do sistema operacional instalada? Vá para Xcode -> Preferências -> Downloads para ver a lista de tempos de execução do simulador legado compatíveis.
Lepidóptero
7

Você precisa obter uma lista de destinos válidos. Para fazer isso, especifique um par de valores-chave incorreto e xcodebuild exibirá as combinações que funcionam:

Comando de lista de destinos

xcodebuild test -destination 'platform=iOS Simulator' -workspace Register.xcworkspace -scheme ThatTestTarget

Exemplo de saída

Available destinations for the "ThatTestTarget" scheme:
    { platform:iOS Simulator, id:145A9B7E-B336-4819-8059-2FFEC408E05E, OS:11.1, name:iPad (5th generation) }
    { platform:iOS Simulator, id:69ABAF6F-ADA3-4E38-AC97-D71001447663, OS:9.3, name:iPad 2 }
    { platform:iOS Simulator, id:550E2F18-406D-4586-84BB-E48F1D704F27, OS:10.3.1, name:iPad Air }
    { platform:iOS Simulator, id:94734F1C-775F-40FA-9015-8196C08805EF, OS:11.1, name:iPad Air }
    { platform:iOS Simulator, id:1DB953DD-CD97-4EC7-8006-BCF01DF3E63F, OS:11.1, name:iPad Air 2 }
    { platform:iOS Simulator, id:DE3072DA-2E31-423D-9D77-220626F8B90A, OS:11.1, name:iPad Pro (9.7-inch) }
    { platform:iOS Simulator, id:3B5D18DB-13B5-4F28-B654-7D2ECDD1F6F0, OS:11.1, name:iPad Pro (10.5-inch) }
    { platform:iOS Simulator, id:A4225E3A-512C-4F42-ADD9-1E7E448C4D27, OS:11.1, name:iPad Pro (12.9-inch) }
    { platform:iOS Simulator, id:684FF1BA-8784-4B7C-B4E5-5231772F0FAC, OS:11.1, name:iPad Pro (12.9-inch) (2nd generation) }

Alterar dois pontos para sinais de igual, remover espaços, ignorar o ID

Então, se você quiser usar este destino:

platform:iOS Simulator, id:684FF1BA-8784-4B7C-B4E5-5231772F0FAC, OS:11.1, name:iPad Pro (12.9-inch) (2nd generation)

Troque os dois pontos por vírgulas, remova os espaços, remova o ID, e você obterá esta string:

platform=iOS Simulator,OS=11.1,name=iPad Pro (12.9-inch) (2nd generation)

Então, todo o comando seria:

xcodebuild test -destination 'platform=iOS Simulator,OS=11.1,name=iPad Pro (12.9-inch) (2nd generation)' -workspace Register.xcworkspace -scheme ThatTestTarget
Dan Rosenstark
fonte
4

Você está construindo para o "Build Only Device" do Xcode, que está compilando o aplicativo. para o processador ARM (enquanto a compilação para o simulador tem como alvo a CPU Intel no seu Mac).

Conecte um dispositivo e selecione-o no pop-up do esquema ativo ou selecione um dos simuladores e pronto.

Walt
fonte
Não me chamo de torre porque sou bom nisso ... Obrigado 2 horas desperdiçadas ha ....
yrpalnoob
3

Com o XCode 8.3.2, recebi esta mensagem de erro depois de tentar executar o aplicativo em um dispositivo bloqueado. Eu desbloqueei e reconectei conforme solicitado, mas o "dispositivo somente de compilação não pode ser usado para executar este destino." mensagem apareceu.

Simplesmente mudei o alvo para um simulador e mudei de volta - isso resolveu meu problema.

catanora
fonte
2

Pelo que vale a pena, se você obtiver o erro A build only device cannot be used to run this target, e veja no navegador de problemas este texto:

ProjectName
Target Integrity:
iOS Deployment Target 'XX.X' é
mais recente que SDK 'iOS YY.Y' no
destino ProjectName

então o problema é que o projeto requer um iOS SDK mais recente do que a sua versão do Xcode disponível. Você encontrará esse problema em, digamos, projetos que aproveitam as vantagens das novas / beta funcionalidades do iOS SDK, como ARKit.

A solução é baixar a versão beta mais recente do Xcode , que deve ter suporte para o iOS SDK não divulgado publicamente que o aplicativo requer. Se você tiver o Xcode mais recente, tente encontrar o iOS de destino em Preferences -> Components -> Simulators.

Daniel R. Livingston
fonte
2

Se você estiver usando cordova / Ionic, vá para Produtos -> Destino-> Escolha o alvo e execute novamente

BenjaBoy
fonte
1

Modificação da resposta de @Quver. Com a versão mais recente do Xcode (8.3), os parâmetros para o comando de destino devem ser fornecidos entre aspas duplas. As aspas simples não funcionaram para mim

adicionar -destination "platform=iOS Simulator,name=iPhone 7"ao seuxcodebuild

Eu não mencionei a versão do sistema operacional no comando acima porque quando uma nova versão do iOS é lançada, este comando passará por um erro informando que este dispositivo não foi encontrado. Portanto, é melhor não dar a versão do sistema operacional

Uma corrida
fonte
1

No meu caso, isso aconteceu quando selecionei um dispositivo iOS genérico e tentei "construir" para publicá-lo na AppStore.
Mas eu deveria ter selecionado Produto -> Arquivo em vez disso

Leo Droidcoder
fonte
0
  1. Eu solicitei um novo AppleID e o adicionei ao "Xcode-> Preferences-> Account" para resolver este problema. (Xcode 7.3)
  2. Ao mesmo tempo, apaguei o AppleID original em "Xcode-> Preferências-> Conta", porque não era mais uma conta paga e não podia adicionar novos dispositivos.
Zack Zhang
fonte
0

As coisas do xcodebuild não estavam funcionando no meu caso.

Aqui está o que resolvi.

Eu removi minha conta da apple e reconfigurei (login) na preferência xcode, e isso foi resolvido.

ps. no iphone 10.1, eu precisava apertar o botão Confiar em Geral> Gerenciamento de dispositivos> informações da conta> Confiar no aplicativo

kakadais
fonte
0

Corrigi este problema para o emulador,

Em primeiro lugar, verifique sua lista de emuladores

Janela> Dispositivos e Simuladores

depois de escolher qualquer dispositivo e clicar em verificar versão do sistema operacional

Se você tem apenas o sistema operacional Apple Watch, deve baixar o novo IOS Simulator

e clique em baixar mais tempos de execução do simulador.

escolha o Simulador IOS correto e faça o download.

Berat Eyüboğlu
fonte
0

Corrigi esse problema acessando as configurações do projeto e, na seção 'Metas', tive que definir a meta de Testes para a equipe correta.

Lord Fresh
fonte
0

Bem, se você deseja obter a lista de destinos disponíveis , chame xcodebuild e passe a opção de linha de comando -showdestinations, e ele imprimirá opções válidas para você escolher:

xcodebuild -showdestinations -workspace Register.xcworkspace -scheme ThatTestTarget
C Johnson
fonte
0

Tentei quase tudo acima, incluindo reiniciar o XCode, nenhum deles funcionou para mim. Resolvi esse problema simplesmente reiniciando meu Mac . Sim, a solução clássica.

Uma observação lateral: este problema ocorreu com meu XCode depois que ele solicitou minha senha do Mac, provavelmente após uma atualização automática.

Ted
fonte
0

Para xcode v11:

Encontrei esse problema ao tentar criar um arquivo do meu projeto. Eu estava tentando clicar em "Construir" quando o dispositivo foi definido como "Dispositivo iOS genérico", mas as etapas adequadas foram:

  1. Defina o dispositivo como "Dispositivo iOS genérico"
  2. Vá para Produto -> Arquivo ( pule pressionando Build! )
Filósofo desajeitado
fonte
0

Encontrei a mesma mensagem de erro. Aqui está o que experimentei e fiz até agora;

Etapa 1: verifique o seu alvo.

Minha meta atual é IOS 13.2. A partir daqui, você não verá quais versões você tem atualmente em sua máquina.

insira a descrição da imagem aqui

Etapa 2: verifique as versões disponíveis em seu local

  • Clique no dispositivo IOS genérico

insira a descrição da imagem aqui

  • Isso exibirá um menu suspenso que contém uma seleção de Baixar Simuladores ...
  • Caso a seleção Baixar Simuladores ... não esteja visível, você precisa abaixar seu alvo. No meu caso, de 13.2 eu fiz 13.0 (isso depende do seu XCode atual), então repita o passo 2 novamente
  • A partir daqui, agora posso ver a seleção de Baixar Simuladores ...
  • Selecione

insira a descrição da imagem aqui

  • Agora você verá quais são as versões disponíveis que você tem
  • A partir daqui, você pode escolher fazer o download ou apenas usar a versão que você tem (a que está selecionada)

insira a descrição da imagem aqui

Etapa 3: mude seu alvo IOS de acordo

  • Agora que você já sabe quais são as versões disponíveis do simulador localmente, pode alterar o destino do IOS.
  • No meu caso, escolho usar IOS 11 (apenas para este exemplo)
  • Então eu mudo o alvo

insira a descrição da imagem aqui

  • Clique novamente no dispositivo IOS genérico

insira a descrição da imagem aqui

  • A partir daqui, agora você pode selecionar qualquer simulador sob aquele IOS

insira a descrição da imagem aqui

Não sou especialista, só queria compartilhar minha experiência e espero que isso possa ajudar alguém.

newProgramm3r
fonte
-1

Eu tive um problema totalmente diferente. Por alguma razão, meu aplicativo " Dispositivos " foi definido como versão universal , ao contrário do iPhone . Quando mudei para o iPhone, tudo funcionou. Não precisa de nenhuma configuração extra.

Amir J
fonte
-2

Isso funcionou para mim.

Você está tentando executar em um dispositivo quando já o construiu para um esquema diferente. Vamos para

Produto> Limpo.

Em seguida, crie com seu dispositivo escolhido a partir dos esquemas ativos.

C. Walther
fonte