web-dev-qa-db-fra.com

Les plugins ne sont pas toujours ajoutés après que Cordova ait ajouté la plate-forme Android et iOs

J'ai besoin d'exécuter ionic platform add Android/iOs plusieurs fois pour obtenir le résultat souhaité . Parfois, des plugins sont ajoutés après la première exécution, mais je dois généralement effacer les plugins et les répertoires de la plate-forme, puis réexécuter l'ajout du cycle de plate-forme jusqu'à ce que tous les plugins soient ajouté au dossier Android.

Quelqu'un d'autre a-t-il rencontré le même problème et si oui - quelle est la résolution? Le cas échéant ...

merci d'avance

16
batanasov

J'ai moi-même rencontré des problèmes similaires. Essayez de réinitialiser votre projet ionique:

ionic state reset

Cela supprime les dossiers platforms/ et plugins/ et les restaure à partir des informations stockées dans votre package.json. Il existe quelques autres commandes utiles documentées sur le projet ionic-cli .

25
jaker

La solution que j'ai finalement utilisée consiste à désinstaller et à réinstaller tous les plugins après avoir ajouté la plate-forme. Depuis que j'ai eu des problèmes avec ce problème dans les anciennes applications Cordova, j'essaie de rendre les versions aussi cohérentes que possible, aussi je n'engage pas le répertoire des plates-formes et ne le supprime pas après avoir créé l'apk. Je l'ai fait avec un script:

ionic platform add Android

ionic plugin remove org.Apache.cordova.device
ionic plugin remove org.Apache.cordova.console
ionic plugin remove com.ionic.keyboard

ionic plugin add org.Apache.cordova.device
ionic plugin add org.Apache.cordova.console
ionic plugin add com.ionic.keyboard

platforms/Android/cordova/build --release

rm -rf platforms

Cela a toujours fonctionné pour moi, mais comme je préfère ne pas avoir à m'inquiéter de l'actualité, j'ai déplacé ces commandes dans: after_platform_add/010_install_plugins.js, avec les ajouts suivants:

packageJSON.cordovaPlugins = packageJSON.cordovaPlugins || [];

packageJSON.cordovaPlugins.forEach(function(plugin) {
  exec('cordova plugin remove ' + plugin, function(error, stdout, stderr) {
    sys.puts(stdout);
  });
});

packageJSON.cordovaPlugins.forEach(function(plugin) {
  exec('cordova plugin add ' + plugin, function(error, stdout, stderr) {
    sys.puts(stdout);
  });
});

Cela suppose qu'il existe quelque chose de similaire dans le package.json dans l'objet JSON racine:

"cordovaPlugins": [
  "org.Apache.cordova.console",
  "org.Apache.cordova.device",
  "com.ionic.keyboard"
]

Ce qui devrait se produire automatiquement si after_plugin_add/010_register_plugin.js fonctionne correctement.

Cela étant dit, j’ai l’impression que c’est un peu un hacky et qu’Ionic devrait gérer tout cela correctement. J’espère donc que je trouverai le temps d’examiner la question de ce côté-ci et de trouver le fond du problème.

2
jbeck

Il vaut mieux maintenant utiliser ionic cordova prepare

Cela installe et configure tous les plugins en une seule étape

Je pense avoir trouvé une solution à ce problème. Au lieu d'utiliser ionic cli pour l'ajout d'une plateforme, j'utilise Sudo cordova platform add .... Ça marche à chaque fois. 

0
batanasov