android - Cordova 8,Android 7.1.0,无法安装任何插件

标签 android cordova

我尝试安装的每个插件都会抛出一个错误,提示找不到 list 。确实,该文件不存在。我正在尝试升级 6.4,因为如果不对构建 list 进行手动更改,6.4 似乎不支持 Android 上的 64 位 CPU。

无法安装“cordova-plugin-geolocation”:错误:ENOENT:没有这样的文件或目录,打开“C:\...\platforms\android\AndroidManifest.xml”

无法安装“cordova-plugin-file”:错误:ENOENT:没有这样的文件或目录,打开“C:\..\platforms\android\AndroidManifest.xml”

无法安装“cordova-plugin-google-analytics”:错误:ENOENT:没有这样的文件或目录,打开“C:\...\platforms\android\AndroidManifest.xml”

无法安装“cordova-plugin-inappbrowser”:错误:ENOENT:没有这样的文件或目录,打开“C:\...\platforms\android\AndroidManifest.xml”

无法安装“cordova-plugin-whitelist”:错误:ENOENT:没有这样的文件或目录,打开“C:\...\platforms\android\AndroidManifest.xml”

无法安装“cordova-plugin-network-information”:错误:ENOENT:没有这样的文件或目录,打开“C:\...\platforms\android\AndroidManifest.xml”

无法安装“cordova-sqlite-storage”:错误:ENOENT:没有这样的文件或目录,打开“C:\...\platforms\android\AndroidManifest.xml”

无法安装“cordova-plugin-android-permissions”:错误:ENOENT:没有这样的文件或目录,打开“C:\...\platforms\android\AndroidManifest.xml”

无法安装“cordova-plugin-statusbar”:错误:ENOENT:没有这样的文件或目录,打开“C:\...\platforms\android\AndroidManifest.xml”

无法安装“cordova-plugin-device”:错误:ENOENT:没有这样的文件或目录,打开“C:\...\platforms\android\AndroidManifest.xml”

无法安装“cordova-plugin-image-picker”:错误:ENOENT:没有这样的文件或目录,打开“C:\...\platforms\android\AndroidManifest.xml”

如何解决这些错误?

最佳答案

得到答案,神奇的社区制作了一个脚本来修补它。

在您的脚本文件夹中创建一个名为

的脚本

补丁-android-studio-check.js

把这个放在里面

/**
 * This hook overrides a function check at runtime. Currently, cordova-android 7+ incorrectly detects that we are using
 * an eclipse style project. This causes a lot of plugins to fail at install time due to paths actually being setup
 * for an Android Studio project. Some plugins choose to install things into 'platforms/android/libs' which makes
 * this original function assume it is an ecplise project.
 */
module.exports = function(context) {
  if (context.opts.cordova.platforms.indexOf('android') < 0) {
    return;
  }

  const path = context.requireCordovaModule('path');
  const androidStudioPath = path.join(context.opts.projectRoot, 'platforms/android/cordova/lib/AndroidStudio');
  const androidStudio = context.requireCordovaModule(androidStudioPath);
  androidStudio.isAndroidStudioProject = function() {  return true; };
};

然后添加这些钩子(Hook)

<platform name="android">
   <hook src="scripts/patch-android-studio-check.js" type="before_plugin_install" />
   <hook src="scripts/patch-android-studio-check.js" type="before_plugin_install" />
   <hook src="scripts/patch-android-studio-check.js" type="before_plugin_add" />
   <hook src="scripts/patch-android-studio-check.js" type="before_build" />
   <hook src="scripts/patch-android-studio-check.js" type="before_run" />
   <hook src="scripts/patch-android-studio-check.js" type="before_plugin_rm" />
</platform>

接下来,删除您的插件和平台文件夹。然后运行 ​​cordova platform add android,这将重新创建平台并正确添加插件。

第二部分是不要使用图像选择器插件。

2019 年 3 月更新 - 从 Cordova Android verison 8 开始,这似乎不再需要,实际上会导致问题。

关于android - Cordova 8,Android 7.1.0,无法安装任何插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51086462/

相关文章:

java - Android Room 分页 - 如何读取两个表?

java - Firebase 数据返回 null

javascript - 多个邮件附件 - PhoneGap

ios - 允许用户浏览文件和上传所选文件的 Cordova 插件 (iOS)

android - 无法解析属性 "src"中的可绘制对象

android - 如何禁用 AdMob 日志?

javascript - React Native app,安装release apk,解析错误

javascript - 在 cordova 中构建并加载一个简单的 Angular2 应用程序

javascript - 如何启用 Javascript 来控制 Phonegap Childbrowser?

CSS 过滤器在 android 2.3 中不起作用