Android 9 HTTP und HTTPS: So konfigurierst du alle Netzwerke im Jahr 2025

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einleitung: Warum Android 9 auch im Jahr 2025 noch wichtig ist



Stell dir vor: Du schreibst eine App, die mit einem Server über das gute alte HTTP kommunizieren soll. Oder du testest eine lokale API auf localhost. Du startest die App auf Android 9 (Pie) – und bekommst einen grauen Bildschirm, eine Verbindungsfehlermeldung und ein Log mit dem beängstigenden Wort Cleartext HTTP traffic not permitted. Kommt dir bekannt vor?



Android 9 (API 28) war ein Wendepunkt: Google hat standardmäßig unverschlüsselte HTTP-Verbindungen verboten. Für Entwickler war das eine Herausforderung. Selbst im Jahr 2025, wo Android 14 und 15 erschienen sind, laufen Millionen von Geräten immer noch mit der "Neun". Darüber hinaus sind viele Unternehmens-Apps und Legacy-Systeme gezwungen, HTTP zu unterstützen. Was tun? Wie erlaubt man alle Arten von Netzwerkverbindungen (HTTP und HTTPS), ohne die Sicherheit zu gefährden?



In diesem Artikel behandeln wir die Best Practices mit Kotlin, die im Jahr 2025 wirklich funktionieren. Du erfährst nicht nur "wie es geht", sondern "wie man es richtig macht" – damit weder Google Play es blockiert noch die Benutzer zu Schaden kommen.



Was sich in Android 9 geändert hat: Ein kurzer Rückblick



Vor Android 8.1 konnten Entwickler HTTP problemlos nutzen. Aber mit der Veröffentlichung von Pie führte Google eine Sicherheitsrichtlinie ein, die Cleartext Traffic blockiert – jeglichen Traffic, der nicht über TLS verschlüsselt ist. Dies betraf:



  • HTTP-Anfragen (Port 80);
  • Unverschlüsselte WebSockets (ws://);
  • Einige benutzerdefinierte Protokolle.


Ausnahme sind HTTPS (Port 443) und lokaler localhost. Aber was, wenn dein Server immer noch auf HTTP läuft? Oder du eine App für das interne Firmennetzwerk entwickelst?



Die Lösung ist die Network Security Configuration. Dies ist eine XML-Datei, die dem System sagt: "Hey, dieser Domain kann man vertrauen." Im Jahr 2025 ist dies der De-facto-Standard, und wir zeigen dir, wie du sie richtig konfigurierst.



Methode 1: Der einfachste Weg – Prüfung für die gesamte App deaktivieren



Wenn du alle Arten von Netzwerkverbindungen (HTTP und HTTPS) für die gesamte App erlauben möchtest (z. B. für einen Prototypen oder einen Test-Build), kannst du ein einziges Flag im Manifest verwenden. Aber Vorsicht: Für die Produktion ist dies eine schlechte Praxis.



Schritt 1: Füge das Attribut in die AndroidManifest.xml ein



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


Schritt 2: Stelle sicher, dass targetSdkVersion = 28 oder niedriger ist



Wenn targetSdkVersion >= 28 ist, funktioniert dieses Flag immer noch. Allerdings kann Google Play den Benutzer vor einer unsicheren App warnen. Im Jahr 2025 ist es besser, diese Methode mit einer feineren Konfiguration zu kombinieren.



Vorteile: schnell, funktioniert für alle Domains.
Nachteile: anfällig für MitM-Angriffe, besteht die Google Play-Moderation nicht.



Methode 2: Der richtige Weg über die Network Security Config (2025 Edition)



Diese Methode ist der Goldstandard. Du erstellst eine XML-Datei, in der du angibst, welche Domains und Protokolle erlaubt sind. Im Jahr 2025 empfehlen wir, sie für alle neuen Projekte zu verwenden.



Schritt 1: Erstelle die Datei res/xml/network_security_config.xml



Hier ist ein Beispiel, das alle HTTP- und HTTPS-Verbindungen für jede Domain erlaubt (aber mit Einschränkungen):



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


Schritt 2: Binde die Konfiguration in die AndroidManifest ein



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


Gu

Blogs

Buchempfehlungen