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:

    Visual Studio 2013 ou Visual Studio 2015
    Windows Phone 8.1 SDK and Windows SDK for Windows 8.1
    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:

  • Installing Xamarin.iOS
  • Installing Xamarin.Android
  • 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:

  • Xamarin Android Player
  • Genymotion
  • 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.