在 grunt 构建到 .apk 后,Cordova 插件没有被拾取

Cordova Plugins not getting picked up after grunt build to .apk

我正在使用 cordova 创建混合移动应用程序。

我将 cordova-contacts 和 cordova-calendar 插件添加到项目中,这些插件反映在 android.json 中,功能列在 platforms/android/res/xml/config.xml 下。

我使用

构建 apk

grunt build --platform=android

在我反编译得到android-debug.apk后,我发现Manifest文件包含了所有的读写权限,插件似乎也存在。

但是在混合应用的 js viewModels 中,找不到插件。

错误:未定义

var options = new ContactFindOptions()

遵循的步骤:

在cordova项目中,

cordova plugin add cordova-plugin-contacts

已验证在配置和 .json 文件中可以看到更改。

有没有漏掉的联动步骤?是否有必要在 Gruntfile.js 中提供 cordova 插件?

更新: Cordova 插件版本 ::

cordova-plugin-calendar:4.5.5, cordova-plugin-contacts:2.2.1

继续浏览,发现某些版本的插件指向不正确的 js 文件。这里也是一样吗?

您可以通过在应用程序文件夹中触发以下命令来从命令行检查正在安装或未安装的插件。

cordova plugin ls

这样你就会知道所有的插件都安装了什么。

如果你的插件被列出。然后我认为问题可能是 android 与插件的平台兼容性。 (Android 6+ 的权限更新导致插件不兼容)

您可以尝试通过以下命令删除平台。

cordova platform rm android

然后通过下面的命令重新添加

cordova platform add android

注意: 删除平台后,您将丢失资产(图标和初始屏幕图像以及在 platform\android 文件夹中完成的任何其他与平台相关的修复)。因此,在删除 android 平台之前复制这些文件。

通过删除和添加 android 平台,cordova 将重新安装插件,这可能会解决您的插件不兼容问题。

grunt 完成的用于创建 apk 的打包是这样的,当应用程序在设备上安装和部署时,cordova.js 被注入基础 html 页面。

然后在 cordova.js 中,我们找到了 getPathPrefixMethod() ,它通过所有脚本标签递归查找 cordova.js 。此路径前缀也用于查找 cordova_plugins.js。

如果我们添加明确的 cordova.js 脚本标签,我们的插件很可能不会被选中。

在使用模拟器和 chrome 调试期间,注意到了这个问题。

希望这对您有所帮助。谢谢.