App Xamarin Forms fecha assim que é iniciado no Visual Studio Emulator, o que fazer?

Continuando a #MaratonaXamarin, encontrei um novo problema ao tentar debugar meu app em Xarmarin Forms no emulador Android do Visual Studio.

Ao tentar debugar o app no emulador, logo após o fim do processo de rebuild o Visual Studio iniciava o processo no emulador, mas antes de aparecer qualquer coisa na tela o aplicativo era encerrado e o Visual Studio não informava nenhum tipo de erro. Ao tentar fazer o deploy, ele era feito corretamente porém o aplicativo instalado no Emulador travava e era exibida a tela de erro da aplicação padrão do Android.

Como resolver? Simples (mas não tão óbvio).

Primeiramente encerre a máquina virtual de forma normal.
Abra o gerenciador do Hyper-V (basta digitar Hyper-V na busca).
Encontre a máquina virtual que estava sendo utilizada.
Com o botão direito selecione Propriedades (Fig.1).

Fig.1

No menu lateral, abra a árvore do item Processador.
Selecione o item Compatibilidade.
Marque a caixa “Migrar para um computador físico com versão diferente de processador” (Fig.2) que estará desmarcarda.

Fig.2

Confirme e feche todas as janelas do Hyper-V.
Volte ao Visual Studio e tente rodar o projeto novamente.

Isso deve resolver o problema.
Funcionou comigo.

Instalando e configurando (do jeito certo) o Xamarin no Visual Studio 2015

Como eu avisei aqui, este mês está acontecendo a Maratona Xamarin e graças à ela eu finalmente tomei vergonha na cara para brincar com algo que já a tempos estava escondido no meu Visual Studio e que apesar do interesse eu nunca havia sequer chegado perto.

O material da primeira semana é algo bem leve, apenas introdução ao conceito do Xamarin e exemplos “Hello World” nas plataformas disponíveis. E aí encontramos o primeiro problema: Os demos do jeito que deveriam funcionar, bem, não funcionam. E para piorar a situação: Boa parte da comunidade Xamarin parece usar o Xamarin Studio para Mac (isso acaba agora com o Visual Studio para Mac substituindo o Xamarin Studio, mas divago…), então o problema não é muito comentado na internet.

Depois de muito bater a cabeça, finalmente consegui deixar tudo rodando corretamente.

Fig.1
Fig.2

Partindo do principio que você já fez a instalação do Visual Studio 2015 corretamente selecionando todas as opções necessárias no instalador, e caso não tenha feito, são todos os itens marcados nas Fig.1 e Fig.2, clique pra engrandalhecer (sic) as bichinhas.

Feito isso e com “aparentemente” tudo funcionando no VS, você vai precisar de:

Java SE Development Kit 8 (Aka JDK1.8) ou superior, na época que escrevo esse post você baixa a versão mais recente neste link.

Uma versão mais recente do NDK (atualmente r13b), que você baixa neste link.

Uma tesoura sem ponta.

E, caso você tenha uma versão PRO do Windows com Hyper-V, o Visual Studio Emulator for Android, que não é necessário mas dá uma surra no emulador padrão do Android SDK, e que você baixa neste link.

Baixados todos os componentes, o JDK e o Emulador possuem instaladores convencionais, portanto é só seguir o next->next->finish e cuidado pra terminar com o baidu instalado na máquina (mentira, o do Java é o McAfee).

Já o NDK será necessário apenas extrair o conteúdo do zip no local correto, que é “C:\ProgramData\Microsoft\AndroidNDK\“. Já existirá pelo menos uma pasta nesta localização, no meu computador era a android-ndk-r11c, a extração correta irá criar uma nova pasta com o nome da versão, só seguir o padrão.

Feito isso, você precisa apontar os novos caminhos no Visual Studio, para isso, basta: Tools -> Options… -> Xamarin -> Android Settings, e Java Development Kit Location e Android NDK Location, clicar nos respectivos “Change” e apontar para as pastas criadas.

Após a alteração é necessário reiniciar o Visual Studio.

E para finalizar, abra o Visual Studio Emulator e baixe as imagens das versões mais recentes da API do Android, por padrão o emulador vem com o pré-histórico 4.4 (19) e você vai querer algo da 5.0 (21) pra cima.

Seguidos esses procedimentos, você deve estar livre para brincar com o Xamarin Forms 😉