37 votes

Cordova ne crée pas AndroidManifest.xml

Je travaille avec Cordova et AndroidStudio pour créer des applications Android/iOS. Tout fonctionnait bien jusqu'à ce que je mette à jour mon Cordova à 8 hier. J'ai également mis à jour Node à la dernière version. Lorsque je crée un projet Cordova et que j'ajoute la plateforme Android. Cela donne une structure de répertoire totalement différente. Je ne vois pas assets , res y src dans le répertoire de la plate-forme du projet D:\testApp1\platforms\android . Plus important encore, le répertoire ci-dessus est manquant AndroidManifest.xml qui est à l'origine de la admob ne parviennent pas à être ajoutés.

Voici l'erreur que je reçois en ajoutant le plugin :

Échec de l'installation de 'cordova-plugin-admobpro' : Erreur : ENOENT : no such file or directory, open ' D:\Projects\testApp1\platforms\android\AndroidManifest.xml ' at Object.fs.openSync (fs.js:646:18) at Object.fs.readFileSync (fs.js:551:33) at Object.parseElementtreeSync ( D:\Projects\testApp1\platforms\android\cordova\node_modules\cordova -commune \src\util\xml -helpers.js:180:27) au niveau du nouveau AndroidManifest ( D:\Projects\testApp1\platforms\android\cordova\lib\AndroidManifest.js :29:20) at AndroidProject.getPackageName ( D:\Projects\testApp1\platforms\android\cordova\lib\AndroidProject.js :99:12) at Api.addPlugin ( D:\Projects\testApp1\platforms\android\cordova\Api.js :223:57) à handleInstall ( C:\Users\Rao\AppData\Roaming\npm\node_modules\cordova\node_modules\cordova -lib \src\plugman\install.js :594:10) sur C:\Users\Rao\AppData\Roaming\npm\node_modules\cordova\node_modules\cordova -lib \src\plugman\install.js :357:28 à _fulfilled ( C:\Users\Rao\AppData\Roaming\npm\node_modules\cordova\node_modules\cordova -lib \node_modules\q\q.js :787:54) at self.promiseDispatch.done ( C:\Users\Rao\AppData\Roaming\npm\node_modules\cordova\node_modules\cordova -lib \node_modules\q\q.js :816:30)

Quelqu'un peut-il m'aider ?

0 votes

J'ai également rencontré le même problème avec un fichier AndroidManifest.xml manquant. Bien qu'il s'agisse d'un simple changement, cette modification entraînera un nombre incalculable d'heures de modifications nécessaires en aval. J'espère vraiment que cette rupture de compatibilité en valait la peine. BTW, j'ai également remarqué que le support de edit-config est cassé sur IOS pour ajouter des descriptions d'utilisation de plugin à *-Info.plist. J'utilise la balise config-file en attendant. Malheureusement, la sauvegarde vers Cordova 7.1.0 fonctionne jusqu'à ce que le changement soit pris en charge dans tous les plugins dépendants.

45voto

Raymond Xie Points 1270

Cordova CLI v8.0 utilisera cordova-android@7.0.0 par défaut.

Comme la plupart des plugins Cordova ne prennent pas en charge cordova-android@7.0.0 Pourtant, vous pouvez aussi essayer d'utiliser l'ancienne version en spécifiant la version :

cordova platform add android@6.4.0

Ou, si vous vous sentez à l'aise, utilisez cordova-android@7.0.0 vous pouvez également attendre une mise à jour sur cordova-plugi-admobpro pour soutenir le cordova-android@7.0.0 c'est pour bientôt.

2 votes

A sauvé ma journée ! Ça a marché pour moi.

2 votes

Ça a tout cassé...:S

0 votes

Même maintenant.... lorsque vous constatez que cela se produit, continuez simplement à essayer de construire avec différentes versions et vous arriverez à le faire fonctionner. Les versions peuvent changer, mais la solution elle-même, dans son essence, est toujours valable et fonctionne.

35voto

jcesarmobile Points 6086

Montage final :

cordova-Android 7.1.4 est sorti, il devrait corriger la plupart de ce genre de problèmes.

éditer :

Comme les gens continuent de voter la réponse, je vais donner plus de détails sur le problème.

Le problème n'est pas vraiment l'écriture du plugin sur le AndroidManifest.xml ou sur le config.xml . Il est vrai que l'emplacement a changé et que les plugins doivent mettre à jour le chemin, mais ce n'est pas obligatoire et Cordova s'occupe des nouveaux chemins.

Le problème est que certains plugins utilisant source-file pour les choses qui ne sont pas du code source. (c'est-à-dire l'utiliser pour copier des images au lieu d'utiliser la balise resource-file tags) Cela crée un dossier res (ou lib) qui perturbe Cordova, lui faisant croire qu'il s'agit d'un ancien projet Eclipse, alors qu'il s'agit en réalité d'un projet Android studio, et qui recherche les fichiers sur les anciens emplacements au lieu de chercher dans les nouveaux emplacements.

Ce problème a été corrigé dans cordova-Android et sera corrigé dans la prochaine version. La solution de contournement est de rechercher le plugin en utilisant source-file et le mettre à jour pour utiliser resource-file étiquette

ANCIENNE RÉPONSE :

Il est maintenant en app/src/main/AndroidManifest.xml .

Si le plugin écrit dessus, il doit être mis à jour pour écrire au bon endroit.

Lire la version 7.0.0 de cordova-Android article de blog

3 votes

Si vous avez un dossier 'res' dans la racine de votre projet, vous obtiendrez toujours cette erreur même après avoir mis à jour le chemin dans le plugin.xml (à cause de la détection du projet Eclipse).

0 votes

@RyanWilliams si vous utilisez Cordova CLI 8 vous n'avez pas à changer les chemins dans le plugin.xml, seulement les chemins dans les hooks ou autres choses qui écrivent les fichiers. Ce qui crée le dossier res doit être modifié. Comme vous le dites, Cordova vérifie ce dossier pour savoir si c'est un projet Android Studio ou un projet Eclipse, donc si c'est un projet Android Studio mais qu'il trouve le dossier res, il devient fou et fait des choses étranges.

0 votes

J'utilise ce plugin qui ne spécifie même pas AndroidManifest dans le plugin.xml et pourtant il ne s'installe toujours pas. Que se passe-t-il ?

22voto

En config.xml du projet Cordova, sous la balise xml <platform name="android"> ajoutez la balise suivante :

<resource-file src="platforms/android/app/src/main/AndroidManifest.xml" target="AndroidManifest.xml" />

3voto

Solvik Points 21

La rétrogradation de 7.0 à 6.4 a fait l'affaire pour moi.

cordova platform rm android
cordova platform add android@6.4
cordova build

2voto

JeffNhan Points 107

J'ai simplement corrigé l'erreur en copiant AndroidManifest.xml dans

plates-formes \android\app\src\main\

à

plates-formes \android\

5 votes

Non, ne faites pas ça. Vous vous débarrasserez de l'erreur, mais vous ne réparerez rien.

0 votes

@jcesarmobile : Ce serait génial si vous pouviez me guider sur ce point. stackoverflow.com/questions/50017635/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X