>_ DevTrendspt

Idioma

Início

Linguagens

Seções

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embarcados Segurança
Go

Desenvolvimento iOS Sem MacBook Usando o Utilitário Builder

Qualquer pessoa que tentou escrever aplicativos móveis em Flutter ou React Native enquanto usava Linux ou Windows inevitavelmente esbarra na barreira de hardware da Apple. Compilar para Android leva alguns minutos localmente, mas iOS sempre requer um Mac com Xcode instalado. Comprar um Mac mini apenas para compilar um artefato de teste duas vezes por semana parece um investimento questionável, especialmente para projetos pessoais ou equipes pequenas.

Recentemente descobri o repositório ios-builder da equipe MobAI. É um pequeno utilitário em Go que cuida da rotina: aciona uma compilação na nuvem do GitHub Actions, baixa o arquivo IPA pronto e conecta o processo de desenvolvimento local a um iPhone real.

Demonstração do Builder

Como Funciona nos Bastidores

A ideia é óbvia, mas aqui eles transformaram isso em uma ferramenta CLI pronta. Em vez de configurar manualmente pipelines complexos, você instala o utilitário builder, que gera um arquivo de workflow para GitHub Actions.

O workflow fica assim:

  1. Você executa o comando de compilação no terminal.
  2. A CLI envia o código para seu repositório e inicia um runner do GitHub Actions no macOS.
  3. O Xcode na nuvem compila o projeto e empacota o artefato.
  4. O utilitário baixa o IPA pronto para a pasta local ./dist/.

Isso significa que você não precisa pagar por um Mac—você usa os minutos gratuitos de CI do GitHub. No entanto, contas gratuitas têm um multiplicador x10 para macOS. Dos 20.000 minutos gratuitos por mês nos runners Mac, você terá cerca de 2.000 minutos restantes. Isso é aproximadamente 15-20 compilações. Isso é suficiente para lançamentos e testes periódicos, mas você não poderá executar CI a cada commit.

O Que o Utilitário Pode Fazer

A ferramenta é projetada para funcionar com stacks multiplataforma populares e projetos nativos.

  • Detecção automática da estrutura do projeto. O utilitário entende Flutter, React Native simples, Expo exportado, Cordova/Ionic e projetos Swift nativos.
  • Gerenciamento de assinatura de código. Você pode fazer upload de certificados e perfis de provisionamento diretamente para os secrets do GitHub via o comando builder signing setup.
  • Hot Reload. A parte mais útil para quem escreve em Flutter ou React Native.
  • Execução em simulador remoto. Através do serviço MobAI, você pode testar o aplicativo compilado em um simulador diretamente do seu navegador ou cliente desktop, embora essa opção exija uma assinatura Pro.

Configuração e Primeira Execução

A instalação é simples. No Windows, você pode baixar um binário pronto da página de releases, e no Linux, WSL ou macOS, execute o comando via terminal:

curl -sSL https://raw.githubusercontent.com/MobAI-App/ios-builder/main/install.sh | bash

Ou compile a partir do código-fonte se você já tiver Go na sua máquina:

git clone https://github.com/MobAI-App/ios-builder.git
cd ios-builder
go build -o builder ./cmd/builder

Após a instalação, você precisa autorizar com o GitHub e inicializar o projeto na raiz do repositório:

builder auth github
cd your-ios-project
builder init

O comando builder init em modo interativo criará um arquivo de configuração .github/workflows/ios-build.yml e um builder.json local.

Exemplo de conteúdo do builder.json:

{
  "project": "MyApp",
  "platform": "ios",
  "github": {
    "owner": "username",
    "repo": "my-ios-app"
  },
  "ios": {
    "path": "ios",
    "scheme": "",
    "signing": true
  },
  "mobai": {
    "url": "http://localhost:8686",
    "device_id": ""
  },
  "flutter": {
    "watch": {
      "dirs": ["lib"],
      "patterns": [".dart"],
      "ignore": [".g.dart", ".freezed.dart"],
      "debounce": 100
    }
  }
}

Uma compilação é iniciada com uma única linha:

builder ios build

Se os certificados do Apple Developer ainda não estiverem configurados, você pode compilar uma versão não assinada com a flag --unsigned.

Desenvolvimento com Hot Reload Sem macOS

Compilar um arquivo IPA é apenas metade da batalha. A verdadeira dor começa quando você precisa corrigir rapidamente a UI e a lógica. Recompilar o projeto no CI para cada mudança de botão não faz sentido porque a compilação leva vários minutos.

Os desenvolvedores resolveram esse problema integrando com o aplicativo MobAI deles, que conecta um iPhone físico ao seu computador via USB.

O workflow do Flutter fica assim:

  1. Você conecta seu iPhone ao seu PC com Windows ou Linux via cabo.
  2. Você compila o IPA base através do builder ios build e instala no dispositivo.
  3. Você inicia o modo de desenvolvimento:
builder dev flutter

O utilitário inicia um file watcher no diretório lib/. Quando você muda o código Dart e salva o arquivo, builder envia um sinal de Hot Reload através do flutter attach. Arquivos gerados como .freezed.dart e .g.dart são ignorados para evitar acionar recargas desnecessárias.

Você só precisará recompilar o aplicativo inteiro pela nuvem quando tocar em código nativo: mudando Podfile, adicionando plugins com dependências nativas complexas, ou editando arquivos Swift.

Para React Native, o processo é praticamente o mesmo:

builder dev rn

O comando inicia um servidor Metro local, faz o forward da porta correta e conecta o bundler ao aplicativo rodando no telefone. Se você estiver trabalhando dentro do WSL2, precisará permitir conexões externas nas configurações do MobAI e especificar o endereço de rede da máquina host Windows.

Pontos de Atenção

A ferramenta parece atraente, mas há várias questões práticas sobre ela:

Ao re-assinar o aplicativo on-the-fly via uma conta Apple ID gratuita, o Bundle ID muda (um sufixo de equipe é adicionado). Isso pode quebrar notificações push ou Sign in with Apple se estiverem vinculados a um identificador específico.

Dependência do utilitário proprietáio MobAI de terceiros. A CLI builder em si é distribuída sob a licença MIT gratuita e é escrita de forma transparente. No entanto, parte da funcionalidade (instalação em dispositivos, simuladores) depende do aplicativo proprietáio MobAI, onde alguns recursos são pagos.

Limites do GitHub Actions. Se você estiver trabalhando em uma fase ativa de layout de UI nativa sem frameworks, os minutos gratuitos nos runners acabarão rapidamente.

Vale a Pena Experimentar

Se você escreve em Flutter ou React Native no Windows/Linux e ocasionalmente precisa testar o aplicativo em um iPhone real ou compilar uma versão de teste para um cliente, ios-builder economizará muito tempo e nervos. Elimina a necessidade de escrever manualmente arquivos YAML para GitHub Actions e configurar downloads de artefatos.

Para projetos grandes com requisitos rígidos de segurança de certificados e pipelines CI/CD complexos, você ainda precisará de um Mac dedicado. Mas para desenvolvedores independentes e equipes pequenas, é uma solução alternativa conveniente.

Projetos relacionados