>_ DevTrendses

Idioma

Inicio

Lenguajes

Secciones

Frontend Backend Móvil DevOps AI / ML GameDev Blockchain Embebidos Seguridad
Go

Desarrollo de iOS sin MacBook usando la utilidad Builder

Cualquiera que haya intentado escribir apps móviles en Flutter o React Native desde Linux o Windows inevitablemente se topa con el muro del hardware de Apple. Construir para Android toma un par de minutos localmente, pero iOS siempre requiere una Mac con Xcode instalado. Comprar una Mac mini solo para construir un artefacto de prueba dos veces por semana parece una inversión cuestionable, especialmente para proyectos personales o equipos pequeños.

Hace poco descubrí el repositorio ios-builder del equipo de MobAI. Es una pequeña utilidad en Go que maneja la rutina: dispara una compilación en la nube de GitHub Actions, descarga el archivo IPA listo y conecta el proceso de desarrollo local a un iPhone real.

Demostración de Builder

Cómo funciona internamente

La idea es obvia, pero aquí la han convertido en una herramienta CLI lista para usar. En lugar de configurar manualmente pipelines complejos, instalas la utilidad builder, que genera un archivo de workflow para GitHub Actions.

El workflow se ve así:

  1. Ejecutas el comando de compilación en la terminal.
  2. El CLI sube el código a tu repositorio e inicia un runner de GitHub Actions en macOS.
  3. Xcode en la nube compila el proyecto y empaqueta el artefacto.
  4. La utilidad descarga el IPA listo a la carpeta local ./dist/.

Esto significa que no necesitas pagar por una Mac—usas los minutos gratuitos de CI de GitHub. Sin embargo, las cuentas gratuitas tienen un multiplicador x10 para macOS. De los 20,000 minutos gratuitos por mes en los runners de Mac, te quedan aproximadamente 2,000 minutos. Eso son unas 15-20 compilaciones. Es suficiente para releases y pruebas periódicas, pero no podrás ejecutar CI en cada commit.

Qué puede hacer la utilidad

La herramienta está diseñada para trabajar con stacks multiplataforma populares y proyectos nativos.

  • Detección automática de estructura del proyecto. La utilidad entiende Flutter, React Native plano, Expo exportado, Cordova/Ionic, y proyectos Swift nativos.
  • Gestión de code signing. Puedes subir certificados y perfiles de aprovisionamiento directamente a los secrets de GitHub mediante el comando builder signing setup.
  • Hot Reload. La parte más útil para quienes escriben en Flutter o React Native.
  • Ejecución en un simulador remoto. A través del servicio MobAI, puedes probar la app compilada en un simulador directamente desde tu navegador o cliente de escritorio, aunque esta opción requiere una suscripción Pro.

Configuración y primera ejecución

La instalación es sencilla. En Windows, puedes descargar un binario listo desde la página de releases, y en Linux, WSL, o macOS, ejecuta el comando mediante terminal:

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

O compila desde el código fuente si ya tienes Go en tu máquina:

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

Después de la instalación, necesitas autorizar con GitHub e inicializar el proyecto en la raíz del repositorio:

builder auth github
cd your-ios-project
builder init

El comando builder init en modo interactivo creará un archivo de configuración .github/workflows/ios-build.yml y un builder.json local.

Ejemplo de contenido de 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
    }
  }
}

Una compilación se lanza con una sola línea:

builder ios build

Si los certificados de Apple Developer aún no están configurados, puedes construir una compilación sin firmar con el flag --unsigned.

Desarrollo con Hot Reload sin macOS

Construir un archivo IPA es solo la mitad de la batalla. El verdadero dolor comienza cuando necesitas corregir rápidamente la UI y la lógica. Recompilar el proyecto en CI para cada cambio de botón no tiene sentido porque la compilación toma varios minutos.

Los desarrolladores resolvieron este problema integrando con su app MobAI, que conecta un iPhone físico a tu computadora mediante USB.

El workflow de Flutter se ve así:

  1. Conectas tu iPhone a tu PC con Windows o Linux mediante cable.
  2. Construyes el IPA base a través de builder ios build y lo instalas en el dispositivo.
  3. Inicias el modo de desarrollo:
builder dev flutter

La utilidad inicia un watcher de archivos en el directorio lib/. Cuando cambias código Dart y guardas el archivo, builder envía una señal de Hot Reload a través de flutter attach. Archivos generados como .freezed.dart y .g.dart se ignoran para evitar activar recargas innecesarias.

Solo necesitarás recompilar toda la app a través de la nube cuando toques código nativo: cambiar Podfile, agregar plugins con dependencias nativas complejas, o editar archivos Swift.

Para React Native, el proceso es prácticamente el mismo:

builder dev rn

El comando inicia un servidor Metro local, reenvía el puerto correcto, y conecta el bundler a la app que se ejecuta en el teléfono. Si estás trabajando dentro de WSL2, necesitarás permitir conexiones externas en la configuración de MobAI y especificar la dirección de red de la máquina Windows host.

Dificultades

La herramienta parece atractiva, pero hay varias preguntas prácticas sobre ella:

Al re-firmar la app sobre la marcha mediante una cuenta gratuita de Apple ID, el Bundle ID cambia (se agrega un sufijo de equipo). Esto puede romper las notificaciones push o Sign in with Apple si están vinculadas a un identificador específico.

Dependencia de la utilidad de terceros MobAI. El CLI builder en sí se distribuye bajo la licencia MIT gratuita y está escrito de forma transparente. Sin embargo, parte de la funcionalidad (instalación en dispositivos, simuladores) depende de la app propietaria MobAI, donde algunas características son de pago.

Límites de GitHub Actions. Si estás trabajando en una fase activa de layout de UI nativa sin frameworks, los minutos gratuitos en los runners se agotarán rápidamente.

¿Vale la pena probar?

Si escribes en Flutter o React Native en Windows/Linux y ocasionalmente necesitas probar la app en un iPhone real o construir una versión de prueba para un cliente, ios-builder te ahorrará mucho tiempo y nervios. Elimina la necesidad de escribir manualmente archivos YAML para GitHub Actions y configurar descargas de artefactos.

Para proyectos grandes con requisitos estrictos de seguridad de certificados y pipelines complejos de CI/CD, aún necesitarás una Mac dedicada. Pero para desarrolladores indie y equipos pequeños, es una alternativa conveniente.

Proyectos relacionados