Back-End

12 dez, 2016

Como solucionar erros de configuração de Xamarin

Publicidade

Xamarin é uma ferramenta incrível que te permite criar aplicativos para iOS, Android, Windows Phone e muito mais, compartilhando código C#, focado em produtividade. Agora que Xamarin é grátis, muita gente está buscando conhecimento e começando a se aventurar no assunto.

O primeiro passo, então, é configurar um ambiente para Xamarin, mas nem sempre essa configuração sai como planejada, o que pode ser bem frustrante pra quem está começando. Na Lambda3, onde trabalho, temos entregado projetos Xamarin há alguns anos e já passamos por muitos desses problemas, o que nos rendeu algumas experiências que podemos compartilhar.

Eu encaixaria Xamarin na terceira lei de Clarke:

Qualquer tecnologia suficientemente avançada é indistinguível de magia.

Muita coisa pode dar errado quando você configura Xamarin pela primeira vez, e as mensagens de erro nem sempre são tão claras. Pensando nisso resolvi fazer este “guia para solucionar erros de configuração de Xamarin que você estava procurando”. Vou catalogar os erros mais comuns que acontecem e como solucioná-los nesse artigo, para tentar ajudar novos aventureiros no mundo do Xamarin! Se você tiver problemas que não estão catalogados aqui, poste nos comentários e tentaremos te ajudar! Então vamos lá!

Meu aplicativo builda mas não faz deploy!

Eu aperto F5, olho na janela de Output, meu projeto builda com sucesso, eu fico feliz, mas nada acontece depois disso. Por algum motivo o aplicativo não está sendo enviado para o meu celular ou emulador.

Esse é fácil de solucionar, precisamos nos certificar de que o projeto está marcado para Deploy nas configurações da sua Solution. É muito comum isso acontecer quando o projeto é criado pelo Xamarin Studio.

Clique nas propriedades da sua Solution, vá em “Configuration Properties” e marque a caixinha de “Deploy” dos projetos que pretende rodar, conforme a foto a seguir:

01

Agora o projeto será enviado para o seu celular/emulador.

Meu projeto Android falha com erro de “aapt.exe”

Passei por esse problema durante um projeto enquanto configurava o servidor de build automatizado, que era compartilhado entre vários times que mexiam com Android. Da noite pro dia o projeto parou de buildar sem que eu tivesse mexido na configuração do ambiente.

O problema pode estar relacionado ao build-tools do Android. Essa é uma ferramenta do próprio Android, usada em vários passos durante a geração do nosso aplicativo, então é comum que isso aconteça quando já desenvolvemos para Android (sem Xamarin) ou quando tentamos manter tudo atualizado no Android SDK Manager.

O Xamarin tem problemas com algumas versões do “build-tools”, então precisamos ficar atentos para não instalar as versões incompatíveis. Podemos ver com detalhes aqui todos os erros que podem acontecer.

Para solucionar esse problema, desinstale o Android SDK Build-tools 24 do seu sistema. Para fazer isso, abra o Android SDK Manager, você pode abrir direto pelo Visual Studio ou pesquisando por “Android SDK Manager” no Windows:

02

Na janela que abrirá, se o build-tools 24 estiver instalado, selecione-o e clique no botão “Delete Package“:

03

Outro ponto importante, caso você esteja com build-tools mais recente que 24.0.1, você precisa ter o JDK 8 instalado.

Não consigo debugar no emulador Android, recebo a mensagem “could not connect to the debugger”

Esse caso acontece em específico se estivermos usando o Visual Studio Emulator for Android. Esse emulador utiliza o Hyper-V por baixo dos panos, e precisamos habilitar um modo de compatibilidade para que tudo funcione.

Abra o Gerenciador do Hyper-V na sua máquina:

04

 

Encontre o seu emulador na lista de máquinas criadas, clique com botão direito e vá em “Configurações“:

05

 

Selecione Processador -> Compatibilidade, e marque o checkbox “Migrate to a physical computer with a different processor version”.

06

É possível que isso ainda não seja o suficiente e você precise desabilitar o “Fast deployment” da sua aplicação. Para fazer isso, vá nas Propriedades do seu projeto Android, selecione a opção “Android Options” e desmarque a caixa “Use Fast Deployment“. Só faça isso se você realmente continuar com problemas, porque desabilitar essa opção vai deixar o processo de debug mais lento.

07

Não consigo mais fazer deploy, recebo o erro “[INSTALL_FAILEDUPDATE_INCOMPATIBLE]”

Esse também é bem simples. Isso ocorre quando alguma modificação faz o Xamarin se perder nas versões do nosso app, e ele para de sobrescrever o app que já está instalado no emulador ou aparelho.

Para resolver é só deletar o APK do seu aparelho. Por ser Android, a forma de fazer isso pode ser ligeiramente diferente de um aparelho pra outro, mas em geral você precisa ir nas Configurações do aparelho, navegar até o menu de Aplicativos, e mandar desinstalar por lá.

Meu projeto Xamarin.Forms/Android não builda com vários erros de Resource

Esse sintoma é bem chato porque às vezes não temos nenhuma mensagem de erro nos ajudando na real causa do problema. Normalmente temos apenas erros semelhantes a esses:

2>d:\Documents\Visual Studio 2015\Projects\App4\App4\App4.Droid\Resources\Resource.Designer.cs(1290,119,1290,143): error CS0117: 'Resource.Styleable' does not contain a definition for 'SnackbarLayout_elevation'
2>d:\Documents\Visual Studio 2015\Projects\App4\App4\App4.Droid\Resources\Resource.Designer.cs(1291,130,1291,165): error CS0117: 'Resource.Styleable' does not contain a definition for 'SnackbarLayout_maxActionInlineWidth'
2>d:\Documents\Visual Studio 2015\Projects\App4\App4\App4.Droid\Resources\Resource.Designer.cs(1308,104,1308,113): error CS0117: 'Resource.Styleable' does not contain a definition for 'TabLayout'
2>d:\Documents\Visual Studio 2015\Projects\App4\App4\App4.Droid\Resources\Resource.Designer.cs(1309,118,1309,141): error CS0117: 'Resource.Styleable' does not contain a definition for 'TabLayout_tabBackground'
2>d:\Documents\Visual Studio 2015\Projects\App4\App4\App4.Droid\Resources\Resource.Designer.cs(1310,120,1310,145): error CS0117: 'Resource.Styleable' does not contain a definition for 'TabLayout_tabContentStart'
2>d:\Documents\Visual Studio 2015\Projects\App4\App4\App4.Droid\Resources\Resource.Designer.cs(1311,115,1311,135): error CS0117: 'Resource.Styleable' does not contain a definition for 'TabLayout_tabGravity'
2>d:\Documents\Visual Studio 2015\Projects\App4\App4\App4.Droid\Resources\Resource.Designer.cs(1312,122,1312,149): error CS0117: 'Resource.Styleable' does not contain a definition for 'TabLayout_tabIndicatorColor'
2>d:\Documents\Visual Studio 2015\Projects\App4\App4\App4.Droid\Resources\Resource.Designer.cs(1313,123,1313,151): error CS0117: 'Resource.Styleable' does not contain a definition for 'TabLayout_tabIndicatorHeight'

Não desanime se existir mais de 100 erros semelhantes a esses. Todos são causados por um único problema, e assim que você solucionar isso todos vão sumir.

Esses problemas acontecem quando usamos os NuGets de Android Support Library do Android. Basicamente todos apps com Material Design acabam usando isso para conseguir dar suporte a aparelhos mais antigos. No momento do Build o Xamarin precisa baixar as implementações nativas, já que suas DLLs só fazem os bindings para essas bibliotecas. Esses downloads são bem grandes, e acontecem apenas na primeira vez que usamos uma nova versão das bibliotecas de suporte, por isso podem demorar bastante. Se a internet oscilar ou o build for cancelado na metade, o Xamarin pode ficar com pacotes corrompidos, que ele não vai mais conseguir apagá-los, à partir daí, todo build falhará pela existência desses pacotes corrompidos.

Para solucionar isso precisamos apagar os pacotes corrompidos para que o Xamarin reinicie o download no momento do Build. Esses pacotes ficam no caminho:

C:\Users\SEU_USUARIO\AppData\Local\Xamarin\zips

Basta apagar tudo que estiver lá dentro e esperar ele fazer o download novamente.

O Xamarin não acha o SDK instalado na minha máquina

 

08

Esse erro acontece quando já mexemos com Android previamente. Esse foi o mais frustrante pra mim quando quis migrar meu projeto para o Xamarin. O Visual Studio/Xamarin nem sempre consegue detectar que já temos um Android SDK instalado, então ele instala outro, em outra pasta. O problema é que agora temos SDKs duplicados, causando conflitos. Isso pode resultar em emuladores que sobem e conectam em portas que não são visíveis ao SDK que o Xamarin enxerga, ou simplesmente em erros no build do projeto como esse:

Error 1 Could not find android.jar for API Level 24. This means the Android SDK platform for API Level 24 is not installed. Either install it in the Android SDK Manager (Tools > Open Android SDK Manager...), or change your Xamarin.Android project to target an API version that is installed.

Primeiro vamos nos certificar de que temos o SDK correto instalado:

09

10

 

 

No caso, já estamos com o SDK instalado corretamente, então agora é hora de garantir que o nosso sistema está apontando para o mesmo SDK que o Xamarin está enxergando.

Vamos pegar o caminho do SDK que o Xamarin está usando, nas opções do Visual Studio (Tools > Options), procure por Xamarin e copie o caminho do SDK:

11

Agora abra o editor de registro do Windows:regedit e vá até o caminho

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Android SDK Tools

PS.: Em algumas máquinas esse caminho pode estar apenas como “Android”.

Altere o Path para o caminho correto do SDK que o Xamarin enxerga.

12

Salve e reinicie a máquina, o erro deve sumir e o projeto deve buildar normalmente agora.

Conclusão

Configurar o Xamarin pela primeira vez pode ser meio chato porque envolve muitas ferramentas trabalhando em conjunto, mas depois de configurado ela é uma das ferramentas mais produtivas para gerar aplicativos multiplataformas. Com este guia, espero que você não tenha mais as frustrações iniciais de começar com Xamarin.

***

Este artigo foi produzido em parceria com a Lambda3. Leia outros conteúdos no blog da empresa: blog.lambda3.com.br