web-dev-qa-db-fra.com

Cordova ne crée pas AndroidManifest.xml

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

Voici l'erreur que j'ai lors de l'ajout du plugin:

Échec de l'installation de 'cordova-plugin-admobpro': Erreur: ENOENT: aucun fichier ou répertoire de ce type, ouvrez 'D:\Projects\testApp1\plateformes\Android\AndroidManifest.xml' à Object.fs.openSync (fs.js: 646: 18) à Object.fs.readFileSync (fs.js: 551: 33) sur Object.parseElementtreeSync (D:\Projects\testApp1\plates-formes\Android\cordova\node_modules\cordova-commun\src\util\xml-helpers.js: 180: 27) lors du nouveau manifeste Android (D:\Projects\testApp1\plates-formes\Android\cordova\lib\AndroidManifest.js: 29: 20) sur AndroidProject.getPackageName (D:\Projects\testApp1\plateformes\Android\cordova\lib\AndroidProject.js: 99: 12) sur Api.addPlugin (D:\Projects\testApp1\plates-formes\Android\cordova\Api.js: 223: 57) at handleInstall (C:\Users\Rao\AppData\Roaming\npm\node_modules\cordova\node_modules\cordova-lib\src\plugman\install.js: 594: 10) sur C:\Utilisateurs\Rao\AppData\Roaming\npm\node_modules\cordova\node_modules\cordova-lib\src\plugman\install.js: 357: 28 at _fulfilled (C:\Users\Rao\AppData\Roaming\npm\node_modules\cordova\node_modules\cordova-lib\node_modules\q\q.js: 787: 54) sur self.promiseDispatch.done (C:\Users\Rao\AppData\Roaming\npm\node_modules\cordova\node_modules\cordova-lib\node_modules\q\q.js: 816: 30)

Puis-je avoir une aide s'il vous plait?

23
Kamran

Edition finale:

cordova-Android 7.1.4 est sorti, il devrait résoudre la plupart de ces problèmes.

modifier:

Comme les gens continuent à voter jusqu'à la réponse, je donnerai plus de détails sur le problème.

Le problème n'est pas vraiment le plugin écrit 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 se charge des nouveaux chemins.

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

Cela a été corrigé dans cordova-Android et sera corrigé dans la prochaine version . La solution consiste à rechercher le plug-in à l'aide de la balise source-file et à le mettre à jour pour qu'il utilise la balise resource-file.

ANCIENNE REPONSE:

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

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

Lire la version de cordova-Android 7.0.0 article de blog

27
jcesarmobile

Cordova CLI v8.0 utilisera [email protected] par défaut.

Comme la plupart des plugins cordova ne supportent pas encore [email protected], vous pouvez aussi essayer d'utiliser le plus ancien en spécifiant la version:

cordova platform add [email protected]

Ou, si vous préférez utiliser [email protected], vous pouvez également attendre une mise à jour sur cordova-plugi-admobpro pour prendre en charge le [email protected], cela arrivera bientôt.

34
Raymond Xie

Dans le fichier config.xml du projet cordova, sous la section balise xml <platform name="Android">, ajoutez la balise suivante:

<resource-file src="platforms/Android/app/src/main/AndroidManifest.xml" target="AndroidManifest.xml" />
8
Sukalyan Debsingha

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

plates-formes\Android\app\src\main \ 

à 

plates-formes\Android \

2
JeffNhan

Le déclassement de 7.0 à 6.4 a fait l'affaire pour moi

cordova platform rm Android
cordova platform add [email protected]
cordova build
1
Solvik

Le problème semble être lorsque vous essayez de générer pour la publication en même temps que vous exécutez l'application localement. J'arrête l'application sur localhost, puis je construis pour la publication. Problème résolu.

0
Ezequias Aramburu

Mon problème était un plugin personnalisé créant le dossier libs dans plates-formes\Android. Cela a fait croire à Cordova que mon projet était un projet Eclipse et que, par conséquent, il recherchait le manifeste Android dans l'ancien lieu.

Si vous passez à Cordova Android +7.0.0, assurez-vous que les plates-formes\Android ne contiennent pas les éléments suivants:

  • AndroidManifest.xml 
  • libs
  • res

ce lien aidé

0
Alessandro Lallo
  1. Tout d'abord, assurez-vous que le plugin prend en charge cordova Android 7.0.0+
  2. Supprimez tous ces dossiers ou fichiers: ['AndroidManifest.xml', 'libs', 'res'] dans le répertoire racine des plateformes/Android. 

Cordova utilise ces fichiers pour déterminer si votre projet est un projet Eclipse. S'ils existent, votre projet sera traité comme un projet Eclipse avec l'ancienne structure de chemin. Certains plugins peuvent créer ces fichiers/dossiers sur votre dossier Android.

0
johnny