Android 9 HTTP et HTTPS : comment configurer tous les réseaux en 2025

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction : pourquoi Android 9 est encore important (même en 2025)



Imagine la situation : tu écris une application qui doit communiquer avec un serveur via le bon vieux HTTP. Ou tu testes une API locale sur localhost. Tu lances sur Android 9 (Pie) — et tu obtiens un écran gris, une erreur de connexion et un journal avec le mot effrayant Cleartext HTTP traffic not permitted. Ça te dit quelque chose ?



Android 9 (API 28) a été un tournant : Google a interdit par défaut les connexions HTTP non sécurisées. Pour les développeurs, cela a été un défi. Même en 2025, alors qu'Android 14 et 15 sont sortis, des millions d'appareils fonctionnent encore sous la "neuf". De plus, de nombreuses applications d'entreprise et systèmes legacy sont obligés de supporter HTTP. Comment faire ? Comment autoriser tous les types de connexions réseau HTTP et HTTPS, sans compromettre la sécurité ?



Dans cet article, nous allons passer en revue les meilleures pratiques sur Kotlin qui fonctionnent réellement en 2025. Tu apprendras non seulement "comment faire", mais "comment bien faire" — pour que Google Play ne bloque pas et que les utilisateurs ne soient pas lésés.



Ce qui a changé dans Android 9 : un bref retour historique



Avant Android 8.1, les développeurs utilisaient HTTP sans problème. Mais avec la sortie de Pie, Google a introduit une politique de sécurité qui bloque le trafic en clair — tout trafic non chiffré via TLS. Cela a concerné :



  • Les requêtes HTTP (port 80) ;
  • Les WebSocket sans chiffrement (ws://) ;
  • Certains protocoles personnalisés.


L'exception — HTTPS (port 443) et le localhost local. Mais que faire si ton serveur vit encore en HTTP ? Ou si tu développes une application pour le réseau interne de l'entreprise ?



La solution — Network Security Configuration. C'est un fichier XML qui dit au système : "Hé, on peut faire confiance à ce domaine". En 2025, c'est le standard de facto, et nous allons montrer comment le configurer correctement.



Méthode 1 : La manière la plus simple — désactiver la vérification pour toute l'application



Si tu veux autoriser tous les types de connexions réseau HTTP et HTTPS pour toute l'application (par exemple, pour un prototype ou une version de test), tu peux utiliser un seul indicateur dans le manifeste. Mais attention : pour la production, c'est une mauvaise pratique.



Étape 1 : Ajoute l'attribut dans AndroidManifest.xml



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


Étape 2 : Assure-toi que targetSdkVersion = 28 ou inférieur



Si targetSdkVersion >= 28, cet indicateur fonctionne toujours. Mais Google Play peut avertir l'utilisateur d'une application non sécurisée. En 2025, il est préférable de combiner cette méthode avec un réglage plus fin.



Avantages : rapide, fonctionne pour tous les domaines.
Inconvénients : vulnérabilité aux attaques MitM, ne passera pas la modération Google Play.



Méthode 2 : La voie correcte via Network Security Config (Édition 2025)



Cette méthode est l'étalon-or. Tu crées un fichier XML dans lequel tu spécifies quels domaines et protocoles sont autorisés. En 2025, nous recommandons de l'utiliser pour tous les nouveaux projets.



Étape 1 : Crée le fichier res/xml/network_security_config.xml



Voici un exemple qui autorise tout HTTP et HTTPS pour n'importe quel domaine (mais avec des limitations) :



<?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>


Étape 2 : Connecte la configuration dans AndroidManifest



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


Go

Blogs

Book Recommendations