为什么我在使用 Ionic Framework 插件 healthkit 时收到错误plugin_not_installed?

2024-03-18

我已经使用 Ionic Framework 一段时间了,但最近遇到了这个错误plugin_not_installed对于 Health Kit 插件,我知道我有基于我的ionic cordova plugin list output.

$ 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() and a 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);
    });
});

以防万一这是版本问题,这是离子信息的输出:

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

如果你来到这里却没有任何效果,别担心,这不是你的错。

您可能已经按照官方文档执行了这两个命令来安装插件:

$ ionic cordova plugin add <your plugin>
$ npm install --save @ionic-native/<your plugin>

您还添加了该插件app-module.ts file:

@NgModule({
    ...

    providers: [
        ...
        Your plugin
        ...
    ]
...
})

您已经在调用您的插件,该插件已正确导入并注入到调用类的构造函数中。

您甚至正在等待 deviceReady 事件来开始使用您的插件:

this.platform.ready().then(() => {
    //Use plugin now
});

然后你仍然得到plugin_not_installed错误。可能发生的一件事是,尽管节点和配置文件有这个多 MB 的集群,但该插件是最近在项目创建时添加的。当您添加插件时,它已下载存储库中可用的最新版本(!!!),并且对于项目中安装的某些平台(android 或 ios),此插件需要比您现在拥有的 Cordova 版本更高的版本。再次输入第一个命令:

$ ionic cordova plugin add <your plugin>

并仔细查看输出。看起来一切顺利,但如果你向上滚动,你可能会发现一个错误,指出你下载的这个插件需要 Cordova android(或 ios)版本 X,而你有 Cordova android(或 ios)版本 Y,且 Y

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 folder.

如果是这种情况,您需要更新有问题的平台。和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 在依赖管理方面确实很糟糕。此外,文档的编写方式就好像每个人都拥有最新的一切一样。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么我在使用 Ionic Framework 插件 healthkit 时收到错误plugin_not_installed? 的相关文章

随机推荐