Après la mise à niveau vers Cordova Android 8.0 , je vois des net::ERR_CLEARTEXT_NOT_PERMITTED
erreurs lorsque je tente de me connecter à des http://
cibles.
Pourquoi cela et comment puis-je résoudre ce problème?
Après la mise à niveau vers Cordova Android 8.0 , je vois des net::ERR_CLEARTEXT_NOT_PERMITTED
erreurs lorsque je tente de me connecter à des http://
cibles.
Pourquoi cela et comment puis-je résoudre ce problème?
Le niveau d'API par défaut de la plate-forme Android Cordova a été mis à niveau. Sur un appareil Android 9, la communication en texte clair est désormais désactivée par défaut .
Pour autoriser à nouveau la communication en texte clair, définissez android:usesCleartextTraffic
sur votre application
balise sur true
:
<platform name="android">
<edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application">
<application android:usesCleartextTraffic="true" />
</edit-config>
</platform>
Comme indiqué dans les commentaires, si vous n'avez pas défini l' android
espace de noms XML précédemment, vous recevrez un error: unbound prefix
pendant la construction. Cela indique que vous devez l'ajouter à votre widget
balise de la même manière config.xml
, comme suit:
<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.
) lors de la création de mon application Cordova. La solution était d'ajouter dans monconfig.xml
fichier, dans l'<widget>
élément my root l'attributxmlns:android="http://schemas.android.com/apk/res/android
AndroidManifest.xml
dans votre projet Android?Il y a deux choses à corriger dans config.xml Donc la bonne réponse devrait être d'ajouter le xmls: android:
plus éditer la configuration pour permettre:
Si l'étape 1 est évitée, erreur: préfixe non lié. apparaîtra
la source
Cleartext représente ici des informations non cryptées. Depuis Android 9, il est recommandé aux applications d'appeler les API HTTPS pour s'assurer qu'aucune veille ne tombe.
Cependant, si nous devons encore appeler des API HTTP, nous pouvons faire ce qui suit:
Plateforme: Ionic 4
Créez un fichier nommé: network_security_config.xml sous project-root / resources / android / xml
Ajoutez les lignes suivantes:
Maintenant dans project-root / config.xml , mettez à jour les lignes suivantes:
Cela devrait fonctionner maintenant.
la source
config.xml
avant laedit-config
balise:<resource-file src="resources/android/xml/network_security_config.xml" target="app/src/main/res/xml/network_security_config.xml" />
. Merci!Pour résoudre le problème, il existe une autre option. dans le fichier resources / android / xml / network_security_config.xml. insérer:
Im mon cas j'utilise l'adresse IP alors base-config est nécessaire, mais si vous avez un domaine. ajoutez simplement le domaine.
la source
J'ai moi-même rencontré ce problème aujourd'hui et j'ai trouvé un plugin vraiment astucieux qui vous évitera d'avoir à essayer d'autoriser manuellement le trafic en texte clair dans Android 9+ pour votre application Apache Cordova. Installez simplement cordova-plugin-cleartext, et le plugin devrait s'occuper de tout ce qui se passe derrière Android pour vous.
la source
Après quelques jours de lutte, cela fonctionne pour moi, et j'espère que cela fonctionne également pour vous.
ajoutez ceci à votre CONFIG.XML , en haut de votre code.
et ce, sous la plate-forme android.
ajoutez le code suivant à ce fichier "resources / android / xml / network_security_config.xml" .
la source
trust-anchors
balises étaient le dernier composant pour faire fonctionner tous les autres éléments.L'ajout de l'attribut suivant dans la balise d'ouverture <widget> a fonctionné pour moi. Recharge simple et en direct correctement sur un émulateur Android 9. xmlns: android = "http://schemas.android.com/apk/res/android"
la source
edit-config
code à partir de la réponse acceptée (fixe l'unbound prefix
erreur)tu devrais ajouter
à
comme ça
la source
Voici la solution qui a fonctionné pour moi. Les fichiers que j'ai mis à jour sont les suivants:
Les modifications apportées aux fichiers correspondants sont les suivantes:
1. config.xml
J'ai ajouté une
<application android:usesCleartextTraffic="true" />
balise dans la<edit-config>
balise dans le fichier config.xml2. network_security_config.xml
Dans ce fichier, j'ai ajouté 2
<domain>
balises dans la<domain-config>
balise, le domaine principal et un sous-domaine selon les exigences de mon projetMerci @Ashutosh pour votre aide.
J'espère que ça aide.
la source
J'utilise IONIC 5.4.13, cordova 9.0.0 ([email protected])
Je répète peut-être des informations, mais pour moi, un problème a commencé à apparaître après l'ajout d'un plugin (pas encore sûr). J'ai essayé toutes les combinaisons ci-dessus, mais rien n'a fonctionné. Il n'a commencé à fonctionner qu'après avoir ajouté:
déposer dans le projet à
donc mon fichier network_security_config.xml ressemble maintenant à:
Merci à tous.
la source
L'ancien cli ionique (4.2) causait un problème dans mon cas, la mise à jour à 5 résout le problème
la source
Nous utilisons le
cordova-custom-config
plugin pour gérer notre configuration Android. Dans ce cas, la solution était d'ajouter un nouveaucustom-preference
à notreconfig.xml
:Est-ce que quelqu'un sait comment faire cela uniquement pour les versions de développement? Je serais heureux que les versions de version quittent ce paramètre
false
.(Je vois les offres de configuration iOS
buildType="debug"
pour cela, mais je ne suis pas sûr que cela s'applique à la configuration Android.)la source
@Der Hochstapler merci pour la solution.
mais dans IONIC 4, une certaine personnalisation dans le projet config.xml fonctionne pour moi
Ajouter une ligne dans la balise Widget
après, dans la balise pour la plate - forme Android customize certaines lignes vérifier ci - dessous
ajouter usesCleartextTraffic = true après networkSecurityConfig et -fichier de ressources balises
la source
Dans un projet de condensateur Ionic 4, lorsque j'ai emballé et déployé sur un téléphone Android pour les tests, j'ai eu cette erreur. Résolu en réinstallant le condensateur et en mettant à jour la plate-forme Android.
la source
Si vous avez un framework Legacy Cordova ayant des problèmes avec la commande NPM et Cordova. Je suggérerais l'option ci-dessous.
Créer le fichier android / res / xml / network_security_config.xml -
AndroidManifest.xml -
la source
La solution suivante a fonctionné pour moi-
goto
resources/android/xml/network_security_config.xml
Changez-le en-la source
Ajoutez simplement cette ligne au fichier plates-formes / android / app / src / main / AndroidManifest.xml
<application android: hardwareAccelerated = "true" android: icon = "@ mipmap / ic_launcher" android: label = "@ string / app_name" android: supportsRtl = "true" android: usesCleartextTraffic = "true" >
la source