Xamarin: O ambiente de desenvolvimento em Windows & Mac

Este artigo tem como objetivo mostrar como criar o ambiente de desenvolvimento cross-platform, em Windows & Mac, usando Xamarin.

Introdução

O ambiente de desenvolvimento de aplicações móveis depende da tecnologia em causa e os sistemas operativos em que estão disponíveis. Desta forma, os programadores de Objective-C terão de usar um Mac para fazer o desenvolvimento das suas aplicações, os programadores de Windows Phone e Windows Store Apps irão usar um Windows e os programadores de Android poderão fazê-lo tanto num Mac como num Windows.

Usando a Xamarin Platform este cenário muda um pouco de figura, isto porque apesar de ser obrigatório ter um Mac para o desenvolvimento de iOS, é possível desenvolver aplicações iOS num Windows. De forma a clarificar como criar o ambiente para desenvolver e testar aplicações para Android, iOS e Windows ao mesmo tempo, irei apresentar os vários cenários possíveis.

Descrição

O ambiente de desenvolvimento disponível para um programador cross-platform é o maior fator de produtividade, influencia se o programador irá tirar partido desse mesmo desenvolvimento. Isto porque, se estamos a desenvolver para as várias plataformas, com o objetivo de partilhar o máximo código possível, vai haver momentos em que é necessário testar o comportamento das aplicações nas várias plataforma ao mesmo tempo.

Ambiente Windows

Consideremos um programador que tem disponível um Windows, neste cenário o programador poderá instalar o Xamarin Platform para Windows, que disponibiliza:

  • Xamarin Studio – ferramenta para o desenvolvimento (IDE) da Xamarin
    Xamarim Studio
    Figura 1: Xamarin Studio
  • Xamarin Android – Android SDK fornecido pela Xamarin

Ao abrir no Xamarin Studio uma solução que contenha o projeto para as várias plataformas iremos obter algo do género:

ENEI.SessionsApp Solution no Xamarin Studio para Windows
Figura 2: ENEI.SessionsApp solution no Xamarin Studio para Windows

Que nos permite constatar que no Xamarin Studio não existe suporte para aplicações iOS nem para Windows.

O desenvolvimento de aplicações Windows é suportado pelas ferramentas e SDKs da Microsoft, sendo necessário instalar:

O licenciamento do Xamarin Platform diz respeito à Xamarin, sendo que o licenciamento do Visual Studio já diz respeito à Microsoft e também deve ser tido em conta consoante estamos perante projetos open source/ensino ou aplicações comerciais.

Abrindo a mesma solução no Visual Studio iremos ter neste momento:

ENEI.SessionsApp solution no Visual Studio
Figura 3: ENEI.SessionsApp solution no Visual Studio

O que nos permite concluir que apenas podemos desenvolver aplicações para Windows, uma vez que os projetos para Android e iOS não são suportado. Desta forma, com base na figura 2 e figura 3 podemos constatar, que com o plano Free e Indie, temos que andar a saltar entre IDEs para fazermos o desenvolvimento de aplicações para Windows e Android.

Com o objetivo de eliminar o problema apresentado acima, a Xamarin criou uma solução que está disponível para estudantes, programadores Open Source e utilizadores do plano Business:

  • Xamarin Plugin para Visual Studio – plugin para dar suporte a projetos da Xamarin e permitir ligar ao Mac Build Host, e fazer deploy para simuladores e dispositivos
  • Xamarin iOS – iOS SDK fornecido pela Xamarin

Ao abrirmos a solução dos casos anteriores, iremos então obter:

Suporte para Xamarin iOS e Android no Visual Studio
Figura 4: Suporte para Xamarin iOS e Android no Visual Studio

E desta forma, conseguimos ter compatibilidade das várias plataformas no mesmo IDE, o que sem dúvidas aumenta a produtividade do programador e a sua visão sobre o desenvolvimento cross-platform.

Como mencionamos anteriormente, é necessário ter um Mac para fazer o build e deploy de aplicações de iOS, que é designado como Mac Build Host.

Xamarin: Sem ligação ao Host
Figura 5: Sem ligação ao Host

Ao fazer Find Mac Build Host é necessário ter a aplicação do Build Host no Mac a correr:

Xamarin: Aplicação Mac Build Host
Figura 6: Aplicação Build Host

E depois da ligação feita, usando o código fornecido, iremos ter:

Xamarin: Build Host paired
Figura 7: Build Host paired
Xamarin: Ligado a um host
Figura 8: Ligado a um host

Neste caso, poderemos utilizar por exemplo um Mac Mini, para que o custo com o um Mac seja o mais baixo possível e depois só é preciso fazer um acesso remoto para usar o simulador de iOS e fazer as ligações com o Build Host. No caso de em que o programador usa dispositivo é preciso que este esteja conectado ao Mac para que seja possível fazer o deploy da aplicação.

Xamarin: ligação Mac/iOS
Figura 9: Host

Ambiente Mac

Consideremos um programador que tem disponível um Mac, neste cenário o programador poderá instalar o Xamarin Platform para Mac, que disponibiliza:

  • Xamarin Studio – ferramenta para o desenvolvimento (IDE) da Xamarin
    Xamarin Studio para Mac
    Figura 10: Xamarin Studio para Mac
  • Xamarin iOS – iOS SDK fornecido pela Xamarin
  • Xamarin Android – Android SDK fornecido pela Xamarin

E ao abrir a solução de exemplo, iremos obter:

ENEI.SessionsApp no Xamarin Studio para Mac
Figura 11: ENEI.SessionsApp no Xamarin Studio

Com isto é possível constatar que num Mac é possível fazer o desenvolvimentos de aplicações de Android e iOS em simultâneo, não havendo no entanto suporte para aplicações Windows que requerem um dispositivo Windows.

Ambiente Misto

Nos casos anteriores, consigo ver o ambiente para desenvolver aplicações cross-platform, em Windows e Mac, usando Xamarin. Neste cenário, o objetivo consiste em mostrar como ter um ambiente misto com um nível de produtividade maior.

Suponhamos que temos um Mac com 16GB de RAM e 512GB de disco, suponhamos também que temos VMWare ou Parallels, desta forma é possível criar uma máquina virtual com o Windows com por exemplo 8GB de Ram e 128GB de disco, permitindo desta forma ter uma performance e uso equivalente a um PC com Windows.

Windows a correr no Parallels (Mac)
Figura 12: Windows a correr no Parallels (Mac)

O que ganhamos neste caso, é que temos um único PC com 2 sistemas operativos, e com isto temos o suporte para todas as plataformas com um conforto de trabalho elevado. No entanto, é preciso ter noção que não é muito recomendado ou até mesmo possível ter simuladores dentro de máquinas virtuais. Refiro-me ao simulador de Windows Phone e de Android, desta forma para resolver esta questão a solução passa por usar um dispositivo Windows Phone conectado à máquina virtual Windows, para que o Visual Studio reconheça o dispositivo e com a aplicação Project My Screen App é possível partilhar o ecrã do dispositivo Windows Phone. Ao nível do Android, a melhor solução passa por usar o Xamarin Android Player, a correr no Mac, que permite o Visual Studio fazer o deploy para este, usando a aplicação ADB fornecida pela Google.

Xamarin: As várias plataformas num ambiente misto
Figura 13: As várias plataformas num ambiente misto

Para mais informações consulta as seguintes referências da Xamarin:

Simuladores

No desenvolvimento de aplicações móveis é muito comum os programadores usarem simuladores para realizar testes à aplicação, no entanto o feedback de um dispositivo real é muito diferente de um simulador e os programadores devem realizar testes mínimos em ambos os casos.

Para desenvolvimento Windows e iOS é possível utilizar os simuladores fornecidos pela Microsoft e Apple (respetivamente), no entanto, no caso de Android os simuladores fornecidos pelo Android SDK (da Google) são muito lentos e pouco friendly, por esta razão muitos programadores têm escolhido os seguintes simuladores:

Que disponibilizam simuladores para vários dispositivos e resoluções.

Conclusão

Em conclusão, podemos concluir que o desenvolvimento cross-platform tem vantagens quando o seu ambiente de desenvolvimento está criado de forma a maximizar a rentabilidade do programador e minimizando o tempo necessário para desenvolve-lo e testa-lo, e consequente irá aumentar a capacidade para aumentar o código partilhado entre as várias plataformas.