web-dev-qa-db-ja.com

Cordovaがプラットフォームを追加した後にプラグインが常に追加されるわけではないAndroidおよびiO

目的の結果を得るには、ionic platform add Android/iOsを数回実行する必要があります。最初の実行後にプラグインが追加されることもありますが、通常はプラグインとプラットフォームディレクトリを一掃し、すべてのプラグインがAndroidフォルダに追加されるまで、プラットフォームサイクルを追加して数回再実行する必要があります。

他の誰かが同じ問題を経験しましたか、そうであれば-解決策は何ですか?もしあれば...

前もって感謝します

17
batanasov

私自身も同様の問題をいくつか経験しました。 ionicプロジェクトをリセットしてみてください:

ionic state reset

これにより、platforms/およびplugins/フォルダーが削除され、package.jsonに保存されている情報から復元されます。 ionic-cliプロジェクト に記載されている他のいくつかの便利なコマンドがあります。

25
jaker

私が最終的に使用した解決策は、プラットフォームを追加した後にすべてのプラグインをアンインストールして再インストールすることです。私は過去のCordovaアプリでこの問題に問題があったため、ビルドをできる限り一貫させるようにしているので、apkのビルド後にプラットフォームディレクトリをコミットして削除することはしません。私はこれをスクリプトで行いました:

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

これは、ルートJSONオブジェクトのpackage.jsonにこれらの行に沿った何かが存在することを前提としています。

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

これは、after_plugin_add/010_register_plugin.jsが正しく機能している場合に自動的に発生します。

そうは言っても、これは一種のハックであり、Ionicはこれらすべてを適切に処理する必要があるので、うまくいけば、この問題をその側で調べて見つける時間を見つけることができますこの問題の根本的な問題。

2
jbeck

ionic cordova prepareを使用することをお勧めします

これにより、すべてのプラグインが1つのステップでインストールおよび構成されます。

0
Json Alzate

私はこの問題の解決策を見つけたと思います。 ionic cliを使用する代わりに、プラットフォームを追加するためにSudo cordova platform add ...。それは毎回働いています。

0
batanasov