Desenvolva e distribua aplicativos iOS sem Mac com Flutter

Publicados: 2019-08-23

Nota do editor: Na Miquido, apoiamos a comunidade de amantes do Flutter e estamos sempre felizes em contribuir para o compartilhamento de conhecimento em toda a rede Flutter. Hoje, apresentamos o artigo convidado da Codemagic, que abordou o tema do desenvolvimento de aplicativos iOS com Flutter e… sem dispositivo macOS. Aproveite cada pedaço dele!


Na maioria das vezes, os aplicativos iOS são desenvolvidos e distribuídos a partir de máquinas macOS. É difícil imaginar o desenvolvimento de aplicativos para a plataforma iOS sem o macOS. No entanto, com a combinação de Flutter e Codemagic, você pode desenvolver e distribuir aplicativos iOS sem usar o macOS. Em nossa postagem anterior, explicamos o processo de assinatura de código de aplicativos iOS sem um Mac. Neste post, abordaremos em detalhes o processo de desenvolvimento de aplicativos Flutter no Linux e o uso de assinatura de código personalizado/manual com Codemagic para ter controle total sobre a assinatura de aplicativos no exemplo do aplicativo Comagic-Demo.

Desenvolvendo aplicativos Flutter no Linux

Flutter é uma estrutura de desenvolvimento de aplicativos móveis multiplataforma que permite desenvolver aplicativos iOS e Android a partir do mesmo código-fonte. No entanto, as estruturas nativas da Apple usadas para desenvolver aplicativos iOS não podem compilar em outras plataformas como Linux ou Windows. Os componentes nativos do iOS exigem um macOS ou Darwin para desenvolver e distribuir aplicativos iOS. No entanto, tecnologias como Flutter nos permitem desenvolver aplicativos multiplataforma em Linux ou Windows e podemos distribuir os aplicativos para a Google Play Store ou Apple App Store usando a solução Codemagic CI/CD.

Obtendo um aplicativo Flutter no Linux

Os aplicativos Android podem ser criados, testados e publicados a partir da plataforma Linux. Podemos aproveitar esse recurso do Android para habilitar o desenvolvimento de aplicativos Flutter no Linux. Nosso aplicativo Flutter é chamado Comagic-Demo. Usaremos esse aplicativo para mostrar como construir para Android e iOS no Linux. No entanto, lembre-se de que só podemos desenvolver no Android no Linux e não no iOS. Ainda teremos o aplicativo iOS que pode ser implantado na App Store enquanto desenvolvemos o aplicativo Android no Linux. Podemos obter nosso Comagic-Demo para Linux usando diferentes maneiras.

Obter uma máquina Linux

Se você já possui um computador com Linux instalado, todo o processo é fácil. Você só precisa instalar o Android SDK e o Flutter na máquina Linux. Depois de clonarmos o aplicativo Comagic-Demo, podemos começar a trabalhar nele imediatamente.

Criar contêineres do Docker

Outra maneira de obter um aplicativo Flutter no Linux é usando o Docker. Se você estiver familiarizado com o ecossistema do Docker, poderá criar um Dockerfile que tenha o Android SDK e o Flutter instalados. Existem muitos Dockerfiles Android no Dockerhub, só precisamos estender essas imagens com o Flutter SDK. Vamos criar um Dockerfile simples estendendo uma imagem de amostra do docker do Android aqui para colocar o ambiente Android e Flutter no contêiner do Docker. O Dockerfile deve copiar o aplicativo no contêiner e executar o ambiente Flutter Android. O exemplo Dockerfile para Comagic-Demo ficará assim:

 DE runmymind/docker-android-sdk
EXECUTAR mkdir /codemagic-demo
WORKDIR /codemagic-demo
ADICIONAR . /codemagic-demo
RUN apt-get update && \
    apt-get install -y lcov git-core curl unzip && \
    git clone https://github.com/flutter/flutter.git && \
    /flutter/bin/flutter médico && \
    apt-get remove -y curl unzip && \
    apt autoremove -y && \
    rm -rf /var/lib/apt/lists/*
ENV PATH $ PATH:/flutter/bin/cache/dart-sdk/bin:/flutter/bin
RUN flutter médico

Este trecho de código é apenas para fins de ilustração, mas você pode personalizar o Dockerfile conforme suas necessidades. Depois de instalar o Dockerfile e o Docker, você pode obter o aplicativo Codemagic usando o Docker.

 $ docker build -t codemagic-demo .
$ docker run --name codemagic-demo

Assim que executarmos esses comandos, teremos o container Docker rodando com ambiente Flutter.

Dockerizar aplicativos Futter será um tópico diferente e o abordaremos em detalhes em um post futuro.

Gerando ativos de assinatura de código do App Store Connect

Para codificar aplicativos iOS de assinatura, você precisa de uma conta de desenvolvedor da Apple, um certificado de desenvolvimento e distribuição, seu ID de aplicativo e perfis de provisionamento criados para o aplicativo. Cobrimos os detalhes das atividades de assinatura de código em uma postagem anterior. Para configurar a assinatura de código manual para as compilações de desenvolvimento ou depuração de aplicativos iOS no Codemagic, precisamos do seguinte:

  • Certificado de desenvolvimento ou distribuição em formato .P12
  • Perfil de provisionamento baixado do App Store Connect ou do portal Apple Developer
  • Identificador de pacote do aplicativo iOS

Podemos baixar o certificado e os perfis de provisionamento nas seções Certificados, Identificadores e Perfis no portal do desenvolvedor da Apple. dentro

Baixe os perfis de provisionamento do portal do desenvolvedor iOS

Da mesma forma, podemos baixar os perfis de provisionamento do portal do desenvolvedor da Apple.

Perfis de provisionamento do iOS

Precisamos de um certificado e um perfil de provisionamento para assinar nosso aplicativo iOS no Codemagic, então salve esses arquivos para usar mais tarde.

Atualizando arquivos de projeto Xcode

Agora, temos todos os ativos de assinatura de código do portal Apple Developer. Em seguida, precisamos classificar o arquivo do projeto Xcode para usar a assinatura manual de código com a equipe e o perfil de provisionamento corretos. Podemos fazer isso usando um script Ruby usando Xcodeproj Gem ou podemos apenas alterar os seguintes campos no arquivo i os/YOUR_APP.xcodeproj/project.pbxproj .

  • DevelopmentTeam = YOUR_DEVELOPMENT_TEAM_ID
  • ProvisioningStyle = Manual
  • PROVISIONING_PROFILE_SPECIFIER = NAME_OF_YOUR_PROVISIONING_PROFILE

Em nosso aplicativo Codemagic-Demo, temos que editar o arquivo do projeto Xcode aqui no GitHub. Temos que fazer essas alterações para a configuração de depuração para compilações internas e para a configuração de versão para compilações da App Store. Depois de definir os valores em project.pbxproj, estamos prontos para implantar o aplicativo iOS da Codemagic sem problemas.

Configurando a assinatura manual de código no Codemagic

Ao desenvolver no Linux, podemos ver apenas o estado do aplicativo Android, pois as ferramentas Xcode e iOS não podem ser instaladas ou executadas no Linux. Existem alguns esforços em andamento para trazer ferramentas Swift e iOS no Linux, mas levará muito tempo. Quando estivermos prontos para distribuir os aplicativos, podemos configurar facilmente o CI/CD para o aplicativo usando o Codemagic, consulte o Guia de introdução aqui. OnCodemagic, podemos habilitar a assinatura de código iOS na seção Publicar carregando o certificado e o perfil de provisionamento que baixamos do portal Apple Developer. No aplicativo Codemagic, navegue até Configurações → Publicar → Assinatura de código iOS → Manual e carregue seu certificado e perfil de provisionamento lá.

Configurando a assinatura manual de código no Codemagic

Ao executar a compilação, você obterá o aplicativo iOS na forma do arquivo IPA que pode ser implantado nos dispositivos provisionados. A lista de artefatos de compilação no Codemagic será assim:

A lista de artefatos de compilação no Codemagic

Como pode ser visto na seção Artefatos , obtivemos codemagic_demo.ipa , bem como arquivos dSYMs para relatórios de falhas. Podemos instalar este aplicativo em qualquer dispositivo iOS que tenha sido adicionado ao perfil de provisionamento e testar nosso aplicativo iOS. Se encontrarmos algum bug lá, sempre podemos voltar ao ambiente Linux e corrigir esses bugs.

Distribuindo o aplicativo iOS para a App Store

A partir de agora, construímos a versão de depuração do aplicativo iOS para testes internos. De forma semelhante, podemos distribuir o aplicativo iOS para a App Store. Quando estivermos prontos para implantar o aplicativo na App Store, precisamos compilar o aplicativo no modo de lançamento . Podemos fazer isso usando o certificado de distribuição e o perfil de provisionamento de produção. Podemos gerar o certificado e os perfis de forma semelhante. Mas temos que escolher a distribuição da App Store ao criar o perfil de provisionamento.

Opção de distribuição da App Store

O perfil de provisionamento de distribuição executará o aplicativo iOS em qualquer dispositivo e não precisamos adicionar os dispositivos explicitamente no perfil de provisionamento. O perfil de provisionamento da App Store terá esta aparência:

O perfil de provisionamento da App Store

Uma vez que temos o certificado de distribuição do iOS e o perfil de provisionamento de produção em mãos, podemos selecionar o modo Release no Seção de compilação no Codemagic como mostrado abaixo.

O modo Release na seção Build no Codemagic

Também definimos os argumentos de compilação para liberar em vez de depurar. Na seção Publicar, precisamos carregar o certificado de distribuição e o perfil de provisionamento de produção para gerar a versão da App Store do aplicativo.

Depois que a Codemagic gerar os artefatos de compilação, podemos compilar para o App Store Connect, anteriormente conhecido como iTunesConnect, seguindo as diretrizes da App Store e enviar o aplicativo para análise.

Conclusão

Com a combinação de uma estrutura de desenvolvimento de aplicativos móveis multiplataforma e uma solução mágica de CI/CD como Codemagic, possuir um Mac para desenvolvimento de aplicativos iOS não é obrigatório. Pode haver alguns problemas na depuração do aplicativo durante o desenvolvimento para iOS, mas é completamente possível desenvolver e publicar aplicativos iOS na App Store usando a combinação de Flutter e Codemagic.

Ícone de aplicativos nativos

Quer construir um aplicativo à prova de futuro para o seu negócio?

Vamos trabalhar juntos