Saltar al contenido principal

Compilar aplicaciones de Linux con Flutter

Consideraciones específicas de la plataforma al compilar para Linux con Flutter.

Esta página analiza las consideraciones exclusivas para compilar aplicaciones Linux con Flutter, incluyendo la integración con el shell y la preparación de aplicaciones para su distribución.

Integrar con Linux

#

La interfaz de programación de Linux, que comprende funciones de biblioteca y llamadas al sistema, está diseñada en torno al lenguaje C y la ABI. Afortunadamente, Dart proporciona el paquete dart:ffi, que permite a los programas de Dart realizar llamadas a bibliotecas de C.

Las Interfaces de Funciones Extranjeras (FFI) permiten a las aplicaciones de Flutter realizar lo siguiente con bibliotecas nativas:

  • asignar memoria nativa con malloc o calloc
  • admitir punteros, structs y callbacks
  • admitir tipos de Interfaz Binaria de Aplicación (ABI) como long y size_t

Para obtener más información sobre cómo llamar a bibliotecas de C desde Flutter, consulta Interoperabilidad de C usando dart:ffi. Para empaquetar y vincular tu propio código nativo de C o C++ con tu aplicación, consulta Vincular con código nativo usando FFI.

Muchas aplicaciones se benefician del uso de un paquete que envuelve las llamadas a la biblioteca subyacente en una API de Dart más conveniente e idiomática. Canonical ha creado una serie de paquetes centrados en habilitar Dart y Flutter en Linux, que incluyen soporte para notificaciones de escritorio, dbus, gestión de red y Bluetooth.

En general, muchos otros paquetes admiten la creación de aplicaciones para Linux, incluyendo paquetes comunes como url_launcher, shared_preferences, file_selector y path_provider.

Preparar aplicaciones Linux para su distribución

#

El binario ejecutable se puede encontrar en tu proyecto bajo build/linux/x64/<build mode>/bundle/. Junto a tu binario ejecutable en el directorio bundle, puedes encontrar dos directorios:

  • lib contiene los archivos de biblioteca .so requeridos
  • data contiene los recursos de datos de la aplicación, como fuentes o imágenes

Además de estos archivos, tu aplicación también depende de varias bibliotecas del sistema operativo contra las cuales ha sido compilada. Para ver la lista completa de bibliotecas, usa el comando ldd en el directorio de tu aplicación.

Por ejemplo, para crear una nueva aplicación de escritorio de Flutter llamada linux_desktop_test, compilarla e inspeccionar las dependencias de la biblioteca de su sistema, ejecuta los siguientes comandos:

flutter create linux_desktop_test
cd linux_desktop_test
flutter build linux --release
ldd build/linux/x64/release/bundle/linux_desktop_test

Para empaquetar esta aplicación para su distribución, incluye todo lo que está en el directorio bundle y verifica que el sistema Linux de destino tenga todas las bibliotecas de sistema requeridas.

Puede que esto solo requiera usar el siguiente comando.

sudo apt-get install libgtk-3-0 libblkid1 liblzma5

Para aprender cómo publicar una aplicación de Linux en la Snap Store, consulta Compilar y lanzar una aplicación de Linux en la Snap Store.

Recursos adicionales

#

Para aprender cómo crear compilaciones de Linux Debian (.deb) y RPM (.rpm) de tu aplicación de escritorio Flutter, consulta la guía de empaquetado de Linux paso a paso.