Contenido del curso

Cómo generar un APK en Flutter

Resumen

Generar un APK en Flutter es el paso que convierte tu proyecto en un archivo instalable en cualquier dispositivo Android. Aquí verás cómo configurar el build.gradle, ajustar el AndroidManifest y compilar tu app de recetas para que funcione fuera del entorno de desarrollo.

¿Qué configurar en el build.gradle antes de compilar el APK?

Antes de generar el archivo de instalación, necesitas abrir la carpeta android/app/build.gradle y ajustar versiones clave. Estos valores definen con qué versión de Android se compila tu app, cuál es la mínima compatible y cómo se identifica cada lanzamiento.

Los cambios principales que se aplican en la clase son:

  • compileSdkVersion en 34, alineada con Android 8.1 en el entorno de build [01:00].
  • minSdkVersion en 21, lo que exige al menos Android 5.0 en el dispositivo.
  • targetSdkVersion en 33, pensada para Android 13.
  • versionCode en 1 y versionName en 1.0, valores que debes incrementar en cada nuevo APK.

¿Qué es el minSdkVersion en Flutter? Es la versión mínima de Android que aceptará tu app. Si lo pones en 21, solo se instalará en dispositivos con Android 5.0 o superior.

¿Cómo hacer el APK más liviano con minify y shrinkResources?

Dentro del mismo build.gradle puedes activar dos banderas que reducen el tamaño final del archivo. La primera, minifyEnabled en true, ofusca y comprime el código. La segunda, shrinkResources en true, elimina recursos que no se están usando.

Con ambas activadas, tu app queda más limpia y ocupa menos espacio en el dispositivo. También se agregan dependencias extra para habilitar permisos de APIs, disponibles en la sección de recursos.

¿Cómo compilar el APK en modo release con Flutter?

Una vez guardados los cambios, abre la terminal en la raíz del proyecto y ejecuta el comando de compilación. Flutter se encarga de empaquetar todo en un solo archivo listo para instalar.

El comando es:

bash flutter build apk --release

Cuando termina, la terminal muestra la ruta exacta del archivo generado. Por defecto, lo encuentras en build/app/outputs/flutter-apk/, y ese es el archivo que debes pasar a un dispositivo Android para instalarlo [02:30].

¿Dónde queda el APK después de compilar en Flutter? En la carpeta build/app/outputs/flutter-apk/ dentro de tu proyecto. Ese archivo .apk es el instalable final.

¿Por qué tu APK necesita permisos de Internet en el AndroidManifest?

Si tu app consume una API, como en este caso una de recetas, el APK no podrá hacer llamadas externas sin permisos explícitos. Esos permisos no se configuran en el código Dart, sino en el archivo AndroidManifest.xml, ubicado en android/app/src/main/.

Ahí debes declarar dos cosas: el permiso de Internet y la autorización para tráfico en texto claro, necesario cuando tu API responde por http o cuando ciertos servicios lo requieren.

Las líneas que se agregan son:

  • <uses-permission android:name="android.permission.INTERNET" /> para acceder a la red.
  • El atributo android:usesCleartextTraffic="true" dentro de la etiqueta application, que habilita el consumo de URLs.

Al tratarse de XML, cada etiqueta debe cerrarse correctamente con su slash final. Una vez guardado el manifest, vuelves a ejecutar flutter build apk --release para que el nuevo APK incluya los permisos.

¿Cómo instalar el APK en un dispositivo Android sin Play Store?

Como el APK no viene de la tienda oficial, Android lo bloquea por defecto. Para instalarlo necesitas habilitar la opción Orígenes desconocidos o Unknown sources en los ajustes de seguridad del dispositivo.

Luego puedes transferir el archivo de la forma que prefieras:

  1. Subirlo a Google Drive y descargarlo desde el celular.
  2. Pasarlo por cable USB a la memoria interna.
  3. Compartirlo por servicios de mensajería o almacenamiento en la nube.

Una vez instalada, la app de recetas accede a Internet, lista las recetas desde la API, abre el detalle de cada una, permite agregar a favoritos, eliminar y usar el formulario. Todo lo que funcionaba en el emulador ahora corre en tu teléfono.

Si ya lograste instalar tu APK, cuéntame en los comentarios qué API estás consumiendo en tu proyecto Flutter.