Ir al contenido
angel.library

xtool: compilar e instalar apps de iOS desde Linux y Windows

xtool es una herramienta de línea de comandos que replica lo que hace Xcode para el ciclo de desarrollo de una app de iOS: compila un paquete de Swift como app, la firma, la instala y la abre en un iPhone conectado por USB. Funciona en Linux, en Windows a través de WSL y también en macOS, donde sirve para trabajar sin el sistema de build de Xcode.

Lo mantiene Kabir Oberai, está escrito en Swift, se publica bajo licencia MIT y supera las 13.000 estrellas. Es un proyecto activo: la versión 1.24.0 salió en octubre de 2026.

Para probar una app propia en un iPhone, Apple exige Xcode, y Xcode solo existe para macOS. Sin un Mac no puedes compilar contra el SDK de iOS ni gestionar la firma de código y los perfiles de aprovisionamiento.

xtool sustituye esas piezas por estándares abiertos:

  • SwiftPM (Swift Package Manager) como sistema de build en lugar de los proyectos .xcodeproj.
  • usbmuxd, del proyecto libimobiledevice, para hablar con el iPhone por USB desde Linux.
  • Un cliente propio de los servicios de Apple Developer que registra el dispositivo y crea certificados y perfiles.
  • SDK de iOS: las cabeceras y bibliotecas del sistema contra las que se compila una app. Vienen dentro de Xcode, y por eso xtool te pide el Xcode.xip.
  • Firma de código: iOS solo ejecuta apps firmadas con un certificado de Apple. Para desarrollo, el certificado va acompañado de un perfil de aprovisionamiento que dice qué app (Bundle ID) puede correr en qué dispositivos.
  • Bundle ID: el identificador único de la app, como com.example.Hello.
  1. xtool setup inicia sesión en Apple y extrae del Xcode.xip un Swift SDK para Darwin. A partir de ahí, swift sdk list muestra darwin y el compilador de Swift de Linux puede generar binarios para iOS.
  2. xtool dev compila el paquete con SwiftPM, empaqueta el resultado como .app según xtool.yml (como mínimo, el Bundle ID), registra el iPhone en tu cuenta, genera certificado, App ID y perfil, firma la app y la instala.
  3. El archivo .bsp/xtool.json hace que el editor pida la información de build a xtool mediante el Build Server Protocol, así que con SourceKit-LSP tienes autocompletado y documentación en editores como VS Code.

Con una cuenta gratuita, dos personas no pueden usar el mismo Bundle ID. Por eso xtool añade un prefijo al instalar en un dispositivo real (por ejemplo XTL-1234.com.example.Hello).

xtool también expone su lógica como biblioteca, XKit, para usar los servicios de Apple Developer y los dispositivos iOS desde tu propio código Swift.

Requisitos, según la guía oficial:

  • En Windows, WSL y USBIPD para pasar el iPhone por USB a WSL.
  • El toolchain de Swift 6.4 para tu distribución, desde swift.org.
  • usbmuxd, que muchas distribuciones ya traen.
  • Xcode 27.1 en formato .xip, descargado desde el navegador en developer.apple.com con tu Apple ID.
Ventana de terminal
sudo apt-get install usbmuxd
curl -fL \
"https://github.com/xtool-org/xtool/releases/latest/download/xtool-$(uname -m).AppImage" \
-o xtool
chmod +x xtool
sudo mv xtool /usr/local/bin/
xtool setup

xtool setup te pide elegir el modo de inicio de sesión y luego la ruta del Xcode.xip:

ModoRequisitoCómo funciona
API KeyApple Developer Program de pagoAPI pública de App Store Connect (clave con rol App Manager)
PasswordCualquier Apple ID (correo, contraseña y 2FA)APIs privadas de Apple

En macOS se instala con Homebrew (brew install xtool-org/tap/xtool) o con xtool.app desde las releases, y usa el Xcode instalado en lugar del .xip.

Ventana de terminal
xtool new Hello
cd Hello
xtool dev

La primera compilación tarda varios minutos porque SwiftPM construye los módulos del SDK de iOS; después se cachean. La primera vez tendrás que pulsar Confiar en el iPhone, activar el Modo desarrollador y confiar en tu certificado en Ajustes > General > VPN y gestión de dispositivos.

Otros subcomandos útiles:

ComandoPara qué
xtool devicesLista los dispositivos conectados
xtool install / uninstall / launchInstala un .ipa, desinstala o abre una app
xtool dsHabla con Apple Developer Services
xtool sdkGestiona el Swift SDK de Darwin

Conviene si quieres aprender desarrollo iOS con SwiftUI sin comprar un Mac, si tu entorno de trabajo es Linux o si quieres automatizar builds de iOS con herramientas abiertas. También admite extensiones de app, como widgets.

No sustituye todo Xcode. Trabaja con paquetes SwiftPM, así que un proyecto .xcodeproj existente no entra tal cual, y su documentación no cubre el simulador ni el envío a la App Store. Para publicar en la tienda sigue haciendo falta el flujo oficial de Apple.

OpciónDiferencia
Xcode en un MacLa vía oficial y completa: simulador, Interface Builder, App Store Connect
Mac en la nube (alquiler)Xcode real sin hardware propio, a cambio de una cuota y de latencia
Frameworks multiplataformaFlutter o React Native permiten escribir en otro sistema, pero firmar y publicar para iOS sigue pidiendo herramientas de Apple
  • Licencia de Apple. El acuerdo de Xcode restringe el uso del software a equipos Apple con macOS. xtool evita distribuir nada de Apple, pero el uso que hagas tú del SDK fuera de un Mac sigue sujeto a ese acuerdo. Es una cuestión legal abierta, no técnica.
  • Credenciales. Según la documentación, las credenciales solo se envían a Apple. Aun así, el modo contraseña depende de APIs privadas que Apple puede cambiar o vigilar.
  • Cuentas gratuitas. Apple limita lo que puede hacer una cuenta sin el programa de pago (los perfiles de desarrollo caducan pronto y hay que reinstalar).
  • WSL y USB. Si aparece AFCClient.Error.muxError, la guía enlaza una solución que reenvía la conexión del dispositivo desde iTunes en Windows en lugar de USBIPD.