Nach dem Upgrade auf Cordova Android 8.0net::ERR_CLEARTEXT_NOT_PERMITTED
werden beim Versuch, eine Verbindung zu http://
Zielen herzustellen , Fehler angezeigt.
Warum ist das so und wie kann ich das beheben?
Nach dem Upgrade auf Cordova Android 8.0net::ERR_CLEARTEXT_NOT_PERMITTED
werden beim Versuch, eine Verbindung zu http://
Zielen herzustellen , Fehler angezeigt.
Warum ist das so und wie kann ich das beheben?
Die Standard-API-Ebene in der Cordova Android-Plattform wurde aktualisiert. Auf einem Android 9-Gerät ist die Klartextkommunikation jetzt standardmäßig deaktiviert .
Um die Klartextkommunikation wieder zuzulassen, setzen Sie das android:usesCleartextTraffic
auf Ihrem application
Tag auf true
:
<platform name="android">
<edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application">
<application android:usesCleartextTraffic="true" />
</edit-config>
</platform>
Wie in den Kommentaren erwähnt, android
erhalten Sie error: unbound prefix
während des Builds eine, wenn Sie den XML-Namespace zuvor nicht definiert haben . Dies zeigt an, dass Sie es wie folgt zu Ihrem widget
Tag hinzufügen müssen config.xml
:
<widget id="you-app-id" version="1.2.3"
xmlns="http://www.w3.org/ns/widgets"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:cdv="http://cordova.apache.org/ns/1.0">
error: unbound prefix.
Beim Versuch, meine Cordova-Anwendung zu erstellen, ist ein Fehler ( ) aufgetreten . Die Lösung bestand darin, in meinerconfig.xml
Datei in meinem<widget>
xmlns:android="http://schemas.android.com/apk/res/android
AndroidManifest.xml
in Ihrem Android-Projekt vorgenommen wurden?In config.xml müssen zwei Dinge korrigiert werden. Die richtige Antwort sollte also das Hinzufügen der xmls sein: android:
plus Bearbeiten der Konfiguration, um Folgendes zu ermöglichen:
Wenn Schritt 1 Fehler vermieden wird: ungebundenes Präfix. wird auftauchen
quelle
Klartext steht hier für unverschlüsselte Informationen. Seit Android 9 wird empfohlen, dass Apps HTTPS-APIs aufrufen, um sicherzustellen, dass keine Vorabende gelöscht werden.
Wenn wir jedoch weiterhin HTTP-APIs aufrufen müssen, können wir Folgendes tun:
Plattform: Ionic 4
Erstellen Sie eine Datei mit dem Namen: network_security_config.xml unter project-root / resources / android / xml
Fügen Sie folgende Zeilen hinzu:
Aktualisieren Sie jetzt in project-root / config.xml die folgenden Zeilen:
Es sollte jetzt funktionieren.
quelle
config.xml
vor demedit-config
Tag einfügen :<resource-file src="resources/android/xml/network_security_config.xml" target="app/src/main/res/xml/network_security_config.xml" />
. Vielen Dank!Um das Problem zu lösen, gibt es eine andere Möglichkeit. in der Datei resources / android / xml / network_security_config.xml. einfügen:
In meinem Fall verwende ich eine IP-Adresse, dann ist eine Basiskonfiguration erforderlich, aber wenn Sie eine Domain haben. Fügen Sie einfach die Domain hinzu.
quelle
Ich bin heute selbst auf dieses Problem gestoßen und habe ein wirklich nützliches Plugin gefunden, das Ihnen den Aufwand erspart, manuell Klartextverkehr in Android 9+ für Ihre Apache Cordova-Anwendung zuzulassen. Installieren Sie einfach Cordova-Plugin-Klartext, und das Plugin sollte sich für Sie um alle Android-Inhalte hinter den Kulissen kümmern.
quelle
Nach ein paar Tagen des Kampfes funktioniert das für mich und ich hoffe, dass dies auch für Sie funktioniert.
Fügen Sie dies Ihrer CONFIG.XML oben in Ihrem Code hinzu.
und das unter der plattform android.
Fügen Sie der Datei "resources / android / xml / network_security_config.xml" den folgenden Code hinzu .
quelle
trust-anchors
Tags die letzte Komponente waren, um all die anderen Dinge zum Laufen zu bringen.Das Hinzufügen des folgenden Attributs innerhalb des öffnenden <widget> -Tags hat bei mir funktioniert. Einfaches und Live-Reloaden korrekt auf einem Android 9-Emulator. xmlns: android = "http://schemas.android.com/apk/res/android"
quelle
edit-config
Code aus der akzeptierten Antwort (behebt denunbound prefix
Fehler)Sie sollten hinzufügen
zu
so was
quelle
Das Folgende ist die Lösung, die für mich funktioniert hat. Die Dateien, die ich aktualisiert habe, sind wie folgt:
Änderungen in den entsprechenden Dateien sind wie folgt:
1. config.xml
Ich habe
<application android:usesCleartextTraffic="true" />
Tag in<edit-config>
Tag in der Datei config.xml hinzugefügt2. network_security_config.xml
In dieser Datei habe ich 2
<domain>
Tags innerhalb des<domain-config>
Tags hinzugefügt , die Hauptdomäne und eine Unterdomäne gemäß meiner ProjektanforderungVielen Dank an @Ashutosh für die Bereitstellung der Hilfe.
Ich hoffe es hilft.
quelle
Ich benutze IONIC 5.4.13, Cordova 9.0.0 ([email protected])
Ich wiederhole möglicherweise Informationen, aber für mich trat nach dem Hinzufügen eines Plugins ein Problem auf (noch nicht sicher). Ich habe alle oben genannten Kombinationen ausprobiert, aber nichts hat funktioniert. Es begann erst nach dem Hinzufügen zu funktionieren:
im Projekt einreichen bei
Meine Datei network_security_config.xml sieht nun folgendermaßen aus:
Dank an alle.
quelle
Altes ionisches Cli (4.2) verursachte in meinem Fall ein Problem. Ein Update auf 5 löst das Problem
quelle
Wir verwenden das
cordova-custom-config
Plugin, um unsere Android-Konfiguration zu verwalten. In diesem Fall bestand die Lösung darin, ein neuescustom-preference
zu unserem hinzuzufügenconfig.xml
:Weiß jemand, wie man das nur für Entwicklungs-Builds macht? Ich würde mich freuen, wenn Release-Builds diese Einstellung verlassen würden
false
.(Ich sehe die iOS-Konfigurationsangebote
buildType="debug"
dafür, bin mir aber nicht sicher, ob dies für die Android-Konfiguration gilt.)quelle
@Der Hochstapler danke für die Lösung.
In IONIC 4 funktionieren jedoch einige Anpassungen in der Projektkonfiguration config.xml für mich
Fügen Sie eine Zeile im Widget-Tag hinzu
nach diesem, in dem Plattform - Tag für Android anpassen einige Zeilen weiter unten überprüfen
hinzufügen usesCleartextTraffic = true nach networkSecurityConfig und Ressource-Datei - Tags
quelle
In einem Ionic 4-Kondensatorprojekt wurde dieser Fehler beim Packen und Bereitstellen auf einem Android-Telefon zum Testen angezeigt. Behebung durch Neuinstallation des Kondensators und Aktualisierung der Android-Plattform.
quelle
Wenn Sie ein Legacy Cordova-Framework haben, das Probleme mit dem NPM- und Cordova-Befehl hat. Ich würde die folgende Option vorschlagen.
Datei erstellen android / res / xml / network_security_config.xml -
AndroidManifest.xml -
quelle
Folgende Lösung hat bei mir funktioniert-
gehe zu
resources/android/xml/network_security_config.xml
Ändere es zu-quelle
Fügen Sie diese Zeile einfach der Datei platform / android / app / src / main / AndroidManifest.xml hinzu
<application android: hardwareAccelerated = "true" android: icon = "@ mipmap / ic_launcher" android: label = "@ string / app_name" android: unterstütztRtl = "true" android: usedCleartextTraffic = "true" >
quelle