Estou desenvolvendo um aplicativo móvel multiplataforma usando Cordova, focando principalmente em iOS na fase de desenvolvimento.
Para meu processo de desenvolvimento, seria ideal se eu pudesse iniciar meu aplicativo Cordova diretamente da linha de comando e carregá-lo em um emulador especificado. Posso fazer isso executando o seguinte no diretório raiz do projeto:
$cordova run --debug --emulator iOS
Isso funciona bem e resulta em um simulador de iOS executando meu aplicativo em um iPhone 4 Retina simulado com iOS 7.0.3
Além desse dispositivo simulado, também gostaria de testar (por exemplo) um iPad. Eu tenho essas imagens de emulação instaladas e posso iniciar meu aplicativo nelas manualmente no Xcode. Além disso, o comando list-emulator-images
(localizado em project_dir/platforms/ios/cordova/lib
) fornece a seguinte saída:
"iPhone Retina (3.5-inch)"
"iPhone Retina (4-inch)"
"iPhone Retina (4-inch 64-bit)"
"iPhone"
"iPad"
"iPad Retina"
No entanto, a questão é: não consigo descobrir como iniciar o emulador em outra coisa senão o padrão (que parece ser a iPhone Retina (4-inch)
imagem de emulação). A saída relevante de cordova help
fornece as seguintes informações:
run [--debug|--release]
[--device|--emulator|--target=FOO]
[PLATFORM] ............................ deploys app on specified platform devices / emulators
Eu tentei coisas como o seguinte:
cordova run --debug --emulator=iPad iOS
E muitas variações disso, mas sem sorte. Toda vez que ele inicia no mesmo emulador.
A documentação da ferramenta de linha de comando não oferece nenhuma informação a esse respeito, e uma extensa pesquisa no Google também não encontrou nada. Estou perdendo algo trivial? Ou estou tentando fazer algo estranho? Eu realmente espero que alguém aqui tenha experiência com isso e possa fornecer algumas respostas.
Muito obrigado antecipadamente!
editar: esqueci de mencionar explicitamente; Estou fazendo tudo isso em um Mac. Como mencionado anteriormente, executar o aplicativo em diferentes emuladores / simuladores no Xcode funciona bem.
"Error: Cannot read property 'name' of undefined"
ao especificar o destino com aspas, eu só poderia fazê-lo funcionar executando-o assimcordova run ios --target=iPhone-6
. Espero que isso evite problemas para alguém!Como csantanapr, você pode usar:
mas, neste caso, o projeto cordova (ou PhoneGap ou outro) será lançado no simulador do iPhone 4s com iOS versão 7.0.3 .
Quer lançar o projeto no mesmo simulador, mas com outra versão iOS (7.1 ou 8.0, caso existam no seu sistema)?
Claro, você pode fazer como dizer cobberboy :
Mas você pode melhorar a
--target
opção derun
comando cordova .Em primeiro lugar, você deve garantir a versão alvo do iOS disponível em seu sistema.
Para isso use a resposta de cobberboy :
Então você precisa abrir o arquivo
your_project_dir/platforms/ios/cordova/lib/run.js
e encontrar linhas de código como abaixo:Para uso
iPhone-4s, 7.1
(ou algum outro), basta adicioná-lo ao arrayvalidTargets
.E em
sua
--target="iPhone-4s, 7.1"
vontade será válida.E função
deployToSim
derun.js
:converter
iPhone-4s, 7.1
em argumento válidocom.apple.CoreSimulator.SimDeviceType.iPhone-4s, 7.1
paraios-sim
.fonte
ionic run ios --target='iPhone-6, 9.0'
ao usar o Ionic Framework.validTargets
e eu era capaz de especificar a plataforma completa, ex:"--target="iPhone-6, 8.4""
. Seria muito bom se Cordova delegasse a validação de destino paraios-sim
.TL; DR
Você pode iniciar um emulador específico e escolher sua versão do ios usando diretamente o ios-sim.
Detalhes
Quando eu executei isto:
e olhei os processos em execução, vi o seguinte (em uma única linha):
Investigando mais profundamente o ios-sim , parece que existem algumas opções mais específicas, particularmente:
Então eu fiz como sugerido e executei o ios-sim com um argumento "showdevicetypes" e consegui isso:
fonte
Não inclua o número da versão
fonte
A partir do Xcode 8.3.2 ...
Tópico antigo, eu sei, mas parece, talvez, que a resposta mudou ligeiramente. As dicas de posts anteriores neste tópico ajudaram, mas também a leitura da documentação incluída no código,
<cordova-project>/platforms/ios/cordova/lib/run.js
Execute
./platforms/ios/cordova/lib/list-emulator-images
para listar as imagens do emulador disponíveis. Não inclua o número da versão no final ao fazer a chamada cordova para executar no emulador desejado.Ver mais
fonte
cordova run ios --target=iPhone-6
Não posso comentar a resposta acima devido à minha baixa reputação, mas a lista de alvos está disponível em:
debaixo
Dito isso, não consigo fazer o emulador de retina do ipad funcionar ...
fonte
saída mais rápida da lista de dispositivos:
$ instruments -s devices
Basta usar o nome do dispositivo sem a versão.
fonte
Executa simulador iOS com requisição web baseado em build já gerado para o aplicativo Cordova. Execute esta solicitação do navegador abre o simulador no mac com versão do iPhone 8Plus: http: // hostname: 3000 / cordova / build / [xxxx-buildnumber] / emulate? Target = iPhone-8-Plus
fonte
Simulador de iphone e ipad diferente
cordova run ios --list
cordova emulate ios --target "iPhone-7"
fonte
A resposta de @Birja está funcionando agora, mas o comando run que ele finalmente usou ainda está errado, então aqui está a resposta certa:
Listar todos os dispositivos disponíveis no simulador
cordova run ios --list
Isso resultará em algo assim:
cordova run ios --target "iPad-Pro, 12.2"
Use qualquer alvo acima. Para rodar no simulador.fonte