使用 Cordova-Android 6.2.0 的 Cordova 错误 - getFileResources 不是函数

Posted

技术标签:

【中文标题】使用 Cordova-Android 6.2.0 的 Cordova 错误 - getFileResources 不是函数【英文标题】:Cordova Error using Cordova-Android 6.2.0 - getFileResources is not a function 【发布时间】:2017-08-28 23:18:35 【问题描述】:

我有一个 ionic/cordova 项目,使用:

cordova-android@6.2.0
cordova-plugin-crosswalk-webview@2.3.0
cordova cli 6.4.0
ionic 1.3.3

当我尝试添加 Android 平台时,我得到以下输出

================

$ ionic platform add android@6.2.0

Adding android project...


Creating Cordova project for the Android platform:

    Path: platforms/android
    Package: com.ionicframework.name
    Name: name
    Activity: MainActivity
    Android target: android-25

Subproject Path: CordovaLib

Android project created with cordova-android@6.2.0

错误:cordovaProject.projectConfig.getFileResources 不是函数

【问题讨论】:

无法重现此错误,您能否提供此错误重现的最小示例?您如何运行您的应用程序,是否有堆栈跟踪出现此错误? 嗨@Bob,我已经更新了我的问题以显示我得到的反馈,因为它似乎在添加平台时已经发生了。没有其他反馈,使用 --stacktrace 运行命令不会产生任何额外的日志。 我有同样的问题有什么想法吗? @Microsmsm - 现在只使用 6.1.2 吗? 新的解决方案是使用6.2.1,这似乎解决了这个问题。 【参考方案1】:

此问题似乎与 cordova-android@6.2.0 中的错误有关,此处已确认:https://issues.apache.org/jira/browse/CB-12633

我现在已经将我的系统更新为cordova-cli - cordova@6.5.0 和cordova-android@6.2.1,它似乎工作了。

更新到第 6 版的 cordova cli:

npm install -g cordova@6

然后添加正确版本的cordova-android

cordova platform add android@6

与这个问题没有直接关系,但是一旦我让它工作,我的系统确实抱怨在我尝试构建我的应用程序时没有设置 gradle 路径,所以我按照这里的步骤操作:https://gradle.org/install#with-homebrew,现在所有构建成功。

【讨论】:

@Microsmsm - 我相信 6.2.0 是目前最新的,虽然我看到了 6.2.1 但看起来它还没有完全发布。不过,之前的 6.1.2 版本似乎仍然有效。如果你运行 ionic platform rm android && ionic platform add android@6.1.2,它现在应该可以工作了。 6.2.1 现已发布 我有 6.3.0 还是同样的问题 @holographix - 据我了解,最新的 cordova-android 版本是 6.2.1,也许您指的是您的 cordova-cli 版本?我将在一分钟内对此进行测试,以检查它现在是否正常工作。尝试运行 $cordova platform 来查看你安装了什么版本的cordova-android。我猜它是 6.2.0? 好的,我搞定了,需要更新cordova(npm install -g cordova),加上你提到的安装gradle,加上这里提到的各种路径:***.com/questions/26209083/…。瞧【参考方案2】:

更新科尔多瓦

npm install -g cordova

然后尝试添加平台,或者如果新版本的cordova有任何问题,请在下面使用

cordova 版本 6.4.0 和 android 6.2.1 存在问题。所以,请尝试使用以下兼容版本

cordova 版本必须是 6.4.0

npm install -g cordova@6.4.0

在你的项目中安装安卓

cordova platform add android@6.1.2  

ionic platform add android@6.1.2

【讨论】:

这会将用户更新为 cordova@7(因为它是最新的),所以最好建议 npm install -g cordova@6。我相信 cordova@7 引入了一些其他问题,所以要明确这一点。 不要告诉人们使用 sudo 来安装东西,那样会产生更多的问题。如果没有 sudo 搜索就无法安装东西,如何摆脱它,但不要使用 sudo @jcesarmobile - 使用 sudo 非常标准,与安装软件前提示许可的 Windows 没有什么不同。这是某种 npm 或 Cordova/Ionic 特定问题吗?谢谢 @JSON on npm docs about how to install packages global (docs.npmjs.com/getting-started/installing-npm-packages-globally) 你可以阅读“如果你遇到 EACCES 错误,你应该修复你的权限。你也可以尝试使用 sudo,但应该避免这种情况”以及如何解决权限问题的链接docs.npmjs.com/getting-started/fixing-npm-permissions 还建议重新打开shell并确保cordova -v给出正确的版本【参考方案3】:

做上面@IonicBurger 所说的一切。 还要确保对于基于 Cordova 的项目,每个 Cordova 版本对安装的 android SDK 和 android 构建工具都有特定的依赖关系。

我目前正在使用 Ionic 3,我遇到了同样的问题。

确保 cordova 是最新的:npm i cordova -g 可以完成这项工作。通过检查 cordova -v 来注意安装了什么版本的cordova。之后确保您已安装 ionic-native;这通常带有离子安装,但使用 npm i ionic-native --save

在本地再次安装它不会有害

查看所有可用平台:ionic cordova 平台列表。一些像相机、媒体等插件有非常具体的cordova要求(参考here)

安装插件时,有时会遇到这样的错误:'Plugin does not support this project's cordova-android version. cordova-android:6.1.2,失败的版本要求:> = 6.3.0 跳过 'cordova-plugin-camera' for android'。没关系。这可以通过以上两个步骤来解决。最重要的是记住这一点:确保您安装了最新的 Android 构建工具SDK。 请参阅下图了解更多详细信息:

请注意,此答案最适合 Windows 环境。

【讨论】:

【参考方案4】:

更新到 cordova@6.5.0 无效 - 我收到错误提示找不到此版本

恢复到 cordova@6.1.2 确实有效

cordova platform update android@6.1.2 --save

【讨论】:

你混淆了cordova版本和平台版本,不幸的是有时看起来一样。【参考方案5】:

降级cordova版本不是正确的解决方案。如果你想使用最新版本的cordova和ionic,而不是使用

ionic cordova platform add android

只要做:

cordova platform add android

像魅力一样工作!

编码不错!

【讨论】:

【参考方案6】:

我在两个离子项目之间切换时出现了这个问题。 我通过尝试另一个节点版本来修复它并且它可以工作。

我使用 nvm use x.x.x 并通过降级到以前的 nodejs 版本,我能够构建我的项目。

希望对某人有所帮助。

【讨论】:

以上是关于使用 Cordova-Android 6.2.0 的 Cordova 错误 - getFileResources 不是函数的主要内容,如果未能解决你的问题,请参考以下文章

编译cordova-android代码

插件不支持该项目的 cordova-android 版本。 cordova-android:6.2.3,失败的版本要求:> = 6.3.0 in oracle MAF2.5

“离子cordova运行android”无法使用cordova-android@7.0.0

使用冲突的 android 组件/依赖版本(play-services-location、firebase 等)构建 cordova-android

升级到 Cordova 5.0 + cordova-android@4.0 后 Ajax 请求失败

sh 在Ionic 3中更新cordova-android