gpt4 book ai didi

android - Capacitor 3.0 升级插件 "not implemented"异常 (Nx Monorepo)

转载 作者:行者123 更新时间:2023-12-04 23:37:14 27 4
gpt4 key购买 nike

我们在一个 nx monorepo 中使用 Angular,我们已经使用 Capacitor 2.4 半年了。目前我们只使用安卓平台。现在,我们需要升级到 Capacitor 3.0。应用程序本身再次运行,但是,只要我使用任何插件,我总是会收到以下异常:ERROR Error: "Device" plugin is not implemented on android这对于我尝试使用的每个插件都是一样的。因此,如果我使用存储插件,我只会为“存储”获得相同的异常。我已经详细遵循了电容器迁移指南 (https://capacitorjs.com/docs/v3/updating/3-0),但我不知道我哪里出错了。一般来说,该应用程序现在可以工作,只要我有任何使用电容器插件的代码被注释掉。使用插件的代码在升级之前确实有效。
根据迁移指南,我添加了 import '@capacitor/core';在 main.ts 文件中,虽然我也尝试将它放在 app.module.ts 中,但在那里也没有成功。我已经按照此处的建议为整个应用程序(根)和 nx-capacitor 应用程序(使用@nxtend-capacitor 添加的电容器应用程序)安装了每个插件 https://nxtend.dev/docs/capacitor/getting-started/ .我还更新了 package.json 文件的电容器 cli、电容器核心和电容器 android 版本。
此外,根据android升级指南,我还更新了gradle和android gradle插件。我也相应地更新了 Android 变量。
老实说,我对 Capacitor 没有太多的经验或深入的了解,而且我知道 Capacitor 3 目前仍处于 Beta 阶段。但是,也许有人已经偶然发现了这个问题并找到了解决方案。我也不确定,这个问题是否可能是由于在 nx 中使用这种 monorepo 方法引起的。有人在使用 Nx monorepo 时将 Capacitor 升级到 3.0 的经验吗?
作为引用,这是电容器应用程序的当前 package.json:

{
"name": "app-cap",
"dependencies": {
"@capacitor-community/electron": "^1.3.2",
"@capacitor/android": "^3.0.0-rc.0",
"@capacitor/app": "^0.3.6",
"@capacitor/camera": "^0.4.3",
"@capacitor/cli": "^3.0.0-rc.0",
"@capacitor/core": "^3.0.0-rc.0",
"@capacitor/device": "^0.5.6",
"@capacitor/filesystem": "^0.5.2",
"@capacitor/ios": "^3.0.0-rc.0",
"@capacitor/local-notifications": "^0.6.0",
"@capacitor/push-notifications": "^0.3.6",
"@capacitor/storage": "^0.3.6",
"capacitor-secure-storage-plugin": "^0.5.0",
"com-darryncampbell-cordova-plugin-intent": "^2.0.0",
"com.darktalker.cordova.screenshot": "^0.1.6",
"cordova-plugin-advanced-http": "^3.1.0",
"cordova-plugin-app-launcher": "^0.4.0",
"cordova-plugin-appcenter-analytics": "^0.5.1",
"cordova-plugin-appcenter-crashes": "^0.5.1",
"cordova-plugin-appcenter-shared": "^0.5.1",
"cordova-plugin-device": "^2.0.3",
"cordova-plugin-dialogs": "^2.0.2",
"cordova-plugin-file": "^6.0.2",
"cordova-plugin-file-opener2": "^3.0.5",
"cordova-plugin-zip": "^3.1.0",
"jetifier": "^1.6.6"
}
}

最佳答案

两个答案都是错误的。
Capacitor 3 允许 android 插件自动注册,但为此您需要从 MainActivity.java 中删除 init 方法,如果它在那里,则自动注册将不起作用,因为 init 是注册插件的传统方式。
所以你有两个选择:

  • capacitor 3 updating docs 中所述,从 MainActivity.java 中删除 init 方法。
  • 保留旧的 init 方法并像在 Capacitor 2 上一样添加插件。 add(DatepickPlugin.class);

  • 通过按照答案 1 建议删除 android 文件夹,init 方法将被删除,这就是该答案有效的原因,但它具有破坏性,它将删除您在项目中的所有手动更改。
    并且添加插件作为答案 2 建议也可以,但是如果使用自动插件注册,则不需要这样做,该方法确实适用于非 npm 插件。

    关于android - Capacitor 3.0 升级插件 "not implemented"异常 (Nx Monorepo),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67226076/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com