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

时间:2017-02-22 06:05:13

标签: javascript android cordova gruntjs cordova-plugins

我正在使用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插件添加cordova-plugin-contacts

验证了配置和.json文件中的更改。

是否有任何我错过的联动步骤?是否有必要在Gruntfile.js中提供cordova插件?

更新: Cordova插件版本::

  

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

在浏览更多内容时,发现某些版本的插件指向不正确的js文件。这是同样的情况吗?

2 个答案:

答案 0 :(得分:0)

您可以通过触发app文件夹中的命令来检查是否从命令行安装了插件。

cordova plugin ls

这样你就会知道所有插件的安装情况。

如果您的插件已列出。然后我认为问题可以是android平台兼容插件。 (Android 6+具有导致不兼容插件的权限更新)

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

cordova platform rm android

然后通过以下命令再次添加

cordova platform add android

注意:一旦删除平台,您将丢失资产(图标和启动屏幕图像以及在platform \ android文件夹内完成的任何其他平台相关修复)。所以在删除android平台之前复制这些文件。

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

答案 1 :(得分:0)

由grunt创建的包装来创建一个apk,当应用程序安装并部署在设备上时,cordova.js会被注入基本的html页面。

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

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

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

希望这会有所帮助。谢谢。