Android 9 HTTP y HTTPS: cómo configurar todas las redes en 2025

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción: por qué Android 9 sigue siendo importante (incluso en 2025)



Imagina la situación: estás escribiendo una aplicación que debe comunicarse con un servidor a través del viejo HTTP. O estás probando una API local en localhost. La ejecutas en Android 9 (Pie) y obtienes una pantalla gris, un error de conexión y un registro con la aterradora palabra Cleartext HTTP traffic not permitted. ¿Te suena familiar?



Android 9 (API 28) fue un punto de inflexión: Google prohibió por defecto las conexiones HTTP no seguras. Para los desarrolladores, esto se convirtió en un desafío. Incluso en 2025, cuando ya se lanzaron Android 14 y 15, millones de dispositivos siguen funcionando con la "versión 9". Además, muchas aplicaciones empresariales y sistemas heredados se ven obligados a soportar HTTP. ¿Qué hacer? ¿Cómo permitir todos los tipos de conexiones de red HTTP y HTTPS sin comprometer la seguridad?



En este artículo, analizaremos las mejores prácticas en Kotlin que realmente funcionan en 2025. Aprenderás no solo "cómo hacerlo", sino "cómo hacerlo correctamente", para que Google Play no lo bloquee y los usuarios no se vean afectados.



Qué cambió en Android 9: un breve repaso histórico



Antes de Android 8.1, los desarrolladores usaban HTTP sin problemas. Pero con el lanzamiento de Pie, Google introdujo una política de seguridad que bloquea el tráfico no cifrado (cleartext traffic) — cualquier tráfico no encriptado a través de TLS. Esto afectó a:



  • Solicitudes HTTP (puerto 80);
  • WebSocket sin cifrado (ws://);
  • Algunos protocolos personalizados.


La excepción es HTTPS (puerto 443) y el localhost local. Pero, ¿qué pasa si tu servidor todavía funciona con HTTP? ¿O si estás desarrollando una aplicación para la red interna de una empresa?



La solución es la Network Security Configuration. Es un archivo XML que le dice al sistema: "Oye, se puede confiar en este dominio". En 2025, esto es el estándar de facto, y te mostraremos cómo configurarlo correctamente.



Método 1: La forma más sencilla: deshabilitar la verificación para toda la aplicación



Si deseas permitir todos los tipos de conexiones de red HTTP y HTTPS para toda la aplicación (por ejemplo, para un prototipo o una compilación de prueba), puedes usar una bandera en el manifiesto. Pero te advertimos: para producción, esto es una mala práctica.



Paso 1: Agrega el atributo en AndroidManifest.xml



<application    android:allowBackup="true"    android:icon="@mipmap/ic_launcher"    android:label="@string/app_name"    android:usesCleartextTraffic="true">    ...</application>


Paso 2: Asegúrate de que targetSdkVersion sea 28 o inferior



Si targetSdkVersion >= 28, esta bandera sigue funcionando. Pero Google Play puede advertir al usuario sobre una aplicación insegura. En 2025, es mejor combinar este método con una configuración más precisa.



Ventajas: rápido, funciona para todos los dominios.
Desventajas: vulnerabilidad a ataques MitM, no pasará la moderación de Google Play.



Método 2: El camino correcto a través de Network Security Config (Edición 2025)



Este método es el estándar de oro. Creas un archivo XML donde especificas qué dominios y protocolos están permitidos. En 2025, recomendamos usarlo para todos los proyectos nuevos.



Paso 1: Crea el archivo res/xml/network_security_config.xml



Aquí tienes un ejemplo que permite todo HTTP y HTTPS para cualquier dominio (pero con restricciones):



<?xml version="1.0" encoding="utf-8"?><network-security-config>    <base-config cleartextTrafficPermitted="true">        <trust-anchors>            <certificates src="system" />        </trust-anchors>    </base-config></network-security-config>


Paso 2: Conecta la configuración en AndroidManifest



<application    android:networkSecurityConfig="@xml/network_security_config"    ...></application>


Go

Blogs

Book Recommendations