【问题标题】:Cordova Plugins not getting picked up after grunt build to .apk在 grunt 构建到 .apk 后,Cordova 插件没有被拾取
【发布时间】:2017-02-22 06:05:12
【问题描述】:

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

我将 cordova-contacts 和 cordova-calendar 插件添加到项目中,这些插件会反映在 android.json 中,并且这些功能列在 platform/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

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

有没有我遗漏的链接步骤?科尔多瓦插件是否必须在 Gruntfile.js 中可用?

更新: Cordova 插件版本 ::

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

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

【问题讨论】:

    标签: javascript android cordova gruntjs cordova-plugins


    【解决方案1】:

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

    cordova plugin ls

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

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

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

    cordova platform rm android

    然后通过下面的命令再次添加

    cordova platform add android

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      在使用 emulator 和 chrome 进行调试时,注意到了这个问题。

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

      【讨论】:

        猜你喜欢
        • 2019-09-22
        • 1970-01-01
        • 2015-07-10
        • 1970-01-01
        • 2011-12-03
        • 2015-01-10
        • 2014-04-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多