Como solucionar erros de configuração de Xamarin
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:
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:
Na janela que abrirá, se o build-tools 24 estiver instalado, selecione-o e clique no botão “Delete Package“:
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:
Encontre o seu emulador na lista de máquinas criadas, clique com botão direito e vá em “Configurações“:
Selecione Processador -> Compatibilidade, e marque o checkbox
“Migrate to a physical computer with a different processor version”.
É 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.
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:
1 | 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 | 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' |
3 | 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' |
4 | 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' |
5 | 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' |
6 | 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' |
7 | 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' |
8 | 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:
1 | 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
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:
1 | 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:
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:
Agora abra o editor de registro do Windows:
regedit
e vá até o caminho1 | 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.
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.
Fonte: imasters.com.br