私はしばらくIonic Frameworkを使用していますが、最近_plugin_not_installed
_の出力に基づいていることがわかっているHealth Kitプラグインでこのエラー_ionic cordova plugin list
_に遭遇しました。
_$ ionic cordova plugin list
> cordova plugin ls
com.telerik.plugins.healthkit 0.5.5 "HealthKit"
cordova-plugin-apprate 1.3.0 "AppRate"
cordova-plugin-badge 0.8.5 "Badge"
cordova-plugin-device 1.1.4 "Device"
cordova-plugin-dialogs 1.3.4 "Notification"
cordova-plugin-globalization 1.0.8 "Globalization"
cordova-plugin-google-analytics 1.8.3 "Google Universal Analytics Plugin"
cordova-plugin-inappbrowser 1.7.2 "InAppBrowser"
cordova-plugin-ionic-webview 1.1.16 "cordova-plugin-ionic-webview"
cordova-plugin-local-notification 0.9.0-beta.1 "LocalNotification"
cordova-plugin-splashscreen 4.0.3 "Splashscreen"
cordova-plugin-statusbar 2.3.0 "StatusBar"
cordova-plugin-whitelist 1.3.1 "Whitelist"
ionic-plugin-keyboard 2.2.1 "Keyboard"
_
私のコードはplatform.ready()
でラップされているので、すべてが読み込まれていることがわかります。エラーのないhealthKit.available()
および_healthKit.requestAuthorization
_にエラーをスローしているヘルスキットコードもあります。
_getWeight.then(function () {
alert("Healthkit is ready!");
alert(weight);
healthKitReady = true;
}).catch(function(err) {
if (err) {
console.log(err); // This is where the error is returned.
}
});
_
関数getWeightは次のとおりです。
_const getWeight = new Promise(function(resolve, reject) {
var error;
healthKit.readWeight({
unit: "lb"
}).then(function (out) {
weight = Math.round(out.value);
alert("weight: " + weight);
resolve(weight);
}, function (err) {
error = err;
reject(error);
});
});
_
これがバージョンの問題である場合に備えて、これはionic infoの出力です。
_cli packages: (/usr/local/share/.config/yarn/global/node_modules)
@ionic/cli-utils : 1.19.0
ionic (Ionic CLI) : 3.19.0
global packages:
cordova (Cordova CLI) : 7.1.0
local packages:
@ionic/app-scripts : 3.1.4
Cordova Platforms : ios 4.5.4
Ionic Framework : ionic-angular 3.9.2
System:
ios-deploy : 1.9.2
ios-sim : 6.1.2
Node : v8.9.1
npm : 2.15.12
OS : macOS High Sierra
Xcode : Xcode 9.2 Build version 9C40b
Environment Variables:
Android_HOME : not set
Misc:
backend : pro
_
ここに来て何もうまくいかなくても心配しないでください、それはあなたの責任ではありません。
おそらく、次の2つのコマンドを実行して、公式ドキュメントに従ってプラグインをインストールしました。
_$ ionic cordova plugin add <your plugin>
$ npm install --save @ionic-native/<your plugin>
_
また、_app-module.ts
_ファイルにプラグインを追加しました。
_@NgModule({
...
providers: [
...
Your plugin
...
]
...
})
_
すでに正しくインポートされ、呼び出しクラスのコンストラクターに挿入されているプラグインを既に呼び出しています。
DeviceReadyイベントがプラグインの使用を開始するのを待ちます。
_this.platform.ready().then(() => {
//Use plugin now
});
_
そして、あなたはまだ_plugin_not_installed
_エラーを受け取っています。発生している可能性があることの1つは、このマルチMBのノードと構成ファイルのclusterfuckにもかかわらず、プロジェクトが少し前に作成されたときにプラグインが最近追加されたことです。プラグインを追加すると、リポジトリで利用可能な最新バージョンがダウンロードされました(!!!)。プロジェクトにインストールされている一部のプラットフォーム(Androidまたはios)の場合、このプラグインには現在のバージョンよりも高いバージョンのCordovaが必要です。最初のコマンドをもう一度入力します。
_$ ionic cordova plugin add <your plugin>
_
そして、出力を注意深く見てください。うまくいったようですが、上にスクロールすると、ダウンロードしたこのプラグインにCordova Android(またはios)バージョンXが必要で、Cordova Android(またはiOS)バージョンY、Y <X。例:
_Fetching plugin "phonegap-plugin-Push@~2.1.0" via npm
Installing "phonegap-plugin-Push" at "2.1.0" for Android
Plugin doesn't support this project's cordova version. cordova: 7.0.2, failed version requirement: >=7.1.0
Skipping 'phonegap-plugin-Push' for Android
_
さらに悪いことに、プラグインは部分的に追加されており、ルートプラグインフォルダーと_config.xml
_に存在する可能性があり、_cordova plugin list
_コマンドの出力にリストされていますが、_platform_www\plugins
_フォルダ。
この場合は、問題のあるプラットフォームを更新する必要があります。また、_cordova platform update
_は廃止されているため、次のようにする必要があります。
_ionic cordova platform remove Android
ionic cordova platform add Android@X
_
Xは、プラグインが必要とする以上のバージョンです(例: "7.1.0")。
次に、プラグインを正しく適切にインストールする必要があります。
_$ ionic cordova plugin add <your plugin>
$ npm install --save @ionic-native/<your plugin>
_
まだ終わっていません。 Androidでは、デバイスで実行しているときにこのエラーが発生する可能性があります:
_FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:processDebugManifest'.
> Manifest merger failed : uses-sdk:minSdkVersion 16 cannot be smaller than version 19 declared in library [:CordovaLib]
_
プラットフォームを更新した後、新しいコードのいくつかはより高い新しいminSDKを必要とします。 ionicの場合、これを_config.xml
_で変更する必要があります。
_<preference name="Android-minSdkVersion" value="19" />
_
そして、うまくいけば、今は大丈夫でしょう。 Cordovaは依存関係の管理に本当に夢中です。また、ドキュメントはすべての人が最新のものを持っているかのように書かれています。
これは私のために働いた!!インポートされたクラスのオブジェクトを使用する前に、platform.ready()関数を使用します。
constructor(public qrScanner: QRScanner) {
// solve the problem - "plugin not installed".
platform.ready().then(()=>{
this.qrscanner();
})
}
お役に立てれば...
詳細ではないため、これは不可解な問題です。私の観察によると、Androidとプラグインのバージョンの間に互換性がない可能性があります。私の場合、ionicは[email protected]を生成しましたこの場合、プラグインは「phonegap-plugin-Push」が必要なバージョン[email protected]ですが、この情報の入手方法は?この情報は、「ionic cordova build Android」コマンドを実行すると表示され、エラーメッセージが表示されます。私は次の手順に従って問題を回避しました:
ionic cordova platform rm Android
manually remove config.xml
ionic integrations enable cordova --add
新しいconfig.xmlを生成しますreinstall them all
ionic cordova platform add Android@<version-Android>
プラグインでバージョンが必要な場合。ただし、すべてが正常であることを確認するには、すべてのパグリンを再インストールする必要がある場合があります。プラグインを正しく再インストールする方法は?
プラグインの再インストール2ステップ
2つのコマンドのアンインストール:
ionic cordova plugin rm <plugin name>
npm uninstall --save <npm-of-plugin>
2つのコマンドのインストール:
ionic cordova plugin add <plugin name>
npm install --save <npm-of-plugin>
このアプローチがプロジェクトの適切な継続に役立つことを願っています。いずれにせよ、それは私のために働いた。
知っておくべき重要事項
私の以前の介入については、すべてのプラグインがインストールされていることを確認することによってionicアプリケーションを再初期化するための解決策を説明しています。私のアプリケーションには実際のデバイスにバグがあったため、APIへのリクエストは機能していませんでした、そしてこの場合、プラグイン「Document-viewer」がうまくインストールされなかったプラグインにリンクされていました。「DevApp」のコンソールのエラーは、プラグイン「Push-notification」に関係し、プラグイン「そして、これら2つのプラグインの間に、うまくインストールされなかったプラグイン "Document-viewer"とプラグイン "Push-notification"が問題なくインストールされました。アプリケーションのリセットを実行したときの証明すべてのプラグインを再インストールすると、APIへの私のリクエストは、「DevApp」で機能する通知を含む実際のデバイスでバグなしに完全に機能します。プッシュの「plugin_not_installed」エラーが常に発生します。
In conclusion
、プラグインを再インストールしても問題は解決しないと思います。「DevApp」の場合のように、すべてのプラグインをサポートしていないのはテストアプリケーションだからです。
Solution
バグがある場合は、実際のデバイスでアプリケーションを起動してみてください。すべてのプラグインが適切にインストールされていないことを伝えてください。
IBeaconプラグインでも同じエラーが発生します。 xcodeを使用してアプリをビルドし、iPhoneにインストールしてみてください。
問題はコルドバは、一部のプラグイン(IBeaconなど)についてだと思います。 ionic serve -c
でプロジェクトを実行し、iPhoneでIonic DevAppを使用してプロジェクトを開くと、cordovaからエラーplugin_not_installed
が返されます。
それで、私はxcodeでアプリをビルドするコマンドionic cordova build ios --prod
を使用して、/platform/ios
で生成された.xcworkspaceファイルを起動し、-iPhoneにインストールしようとしました。 (xcodeでアプリに署名し、バンドルIDを変更することを忘れないでください)!