Плагины не всегда добавляются после добавления кордоны платформы android и iOS

Мне нужно запустить ionic platform add android/iOs несколько раз, чтобы получить желаемый результат. Иногда после первого запуска добавляются плагины, но обычно я должен уничтожить плагины и каталоги платформы и повторно запускать добавление цикла платформы несколько раз, пока все плагины не будут добавлены в папку android.

У кого-нибудь еще была такая же проблема, и если да, то в чем заключается разрешение? если есть...

заблаговременно

Ответ 1

Я сам испытал некоторые подобные проблемы. Попробуйте перезапустить свой ионный проект:

ionic state reset

Это удаляет папку platforms/ и plugins/ и восстанавливает их из информации, хранящейся в вашем package.json. Там есть еще несколько полезных команд, описанных в проекте ionic-cli.

Ответ 2

Решение, которое я закончил использовать, - это удалить и переустановить все плагины после добавления платформы. Поскольку у меня были проблемы с этой проблемой в предыдущих приложениях Кордовы, я пытаюсь сделать сборки максимально возможными, поэтому я не занимаюсь каталогом платформ и удаляю его после сборки apk. Я сделал это с помощью 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

Это постоянно работало для меня, но, поскольку я бы предпочел не беспокоиться об этом, я переместил эти команды в: after_platform_add/010_install_plugins.js со следующими дополнениями:

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);
  });
});

Это предполагает, что что-то в этих строках существует в package.json в корневом объекте JSON:

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

Это должно происходить автоматически, если функция after_plugin_add/010_register_plugin.js работает правильно.

Все, что сказал, я чувствую, что это своего рода хакерство, и что Ион ​​должен все это правильно обрабатывать, поэтому, надеюсь, я найду время, чтобы изучить эту проблему на этой стороне вещей и найти коренную проблему этой проблемы.

Ответ 3

Я думаю, что нашел решение этой проблемы. Вместо использования ионного cli для добавления платформы я использую sudo cordova platform add .... Он работает каждый раз.