【问题标题】:Cordova 6.0 plugins not working on androidCordova 6.0 插件无法在 android 上运行
【发布时间】:2016-03-02 04:26:52
【问题描述】:

我是 phonegap/cordova 的新手。这是我的第一个应用程序。我的目标是 Android 5.1 或更高版本。我正在使用 Cordova CLI。

我正在构建一个使用 cordova 媒体插件的应用程序。我安装了插件,虽然我在 config.xml 中看到了所有必需的文件声明,但当我创建 Media 对象时,javascript 给出了一个错误“ReferenceError: Media is not defined”。 我所做的更改如下。

1)。使用 cordova CLI 安装媒体插件 cordova 插件添加 org.apache.cordova.media

2)。在platforms\android\res\xml\config.xml

<?xml version='1.0' encoding='utf-8'?>
<widget id="com.phonegap.HelloWorld" version="1.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:gap="http://phonegap.com/ns/1.0">
    <preference name="loglevel" value="DEBUG" />
    <feature name="File">
        <param name="android-package" value="org.apache.cordova.file.FileUtils" />
        <param name="onload" value="true" />
    </feature>
    <feature name="Media">
        <param name="android-package" value="org.apache.cordova.media.AudioHandler" />
    </feature>

3)。在platforms\android\AndroidManifest.xml

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />

4)。在 index.html 中

<head>
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <link rel="stylesheet" media = "screen and (orientation: landscape)" href="css/index.css" type="text/css">
        <link rel="stylesheet" media = "screen and (orientation: portrait )" href="css/index_portrait.css" type="text/css">
        <script type="text/javascript" src="js/index.js"></script>
        <script type="text/javascript" src="cordova.js"></script>

5)。在 index.js 中,我在 deviceready 上创建了一个媒体对象,它给出了以下错误 - ReferenceError: Media is not defined'

我检查了上一篇文章中提到的要点 [Cordova plugins not working

[1]: Cordova plugins not working 并列出了插件。仍然 javascript 无法使用该插件。

我错过了什么吗?

【问题讨论】:

  • 您的 config.xml 表明您正在查看旧文档。除非您使用 IDE,否则不应使用 &lt;feature&gt;。也没有理由查看您的 AndroidManifest.xml,除非您尝试特殊配置。因此,请阅读下一条评论。
  • 在您的帖子中回答以下问题。因为这似乎是你关于这个主题的第一篇文章。这是您的第一个混合应用程序吗?您的目标平台及其目标版本是什么:Android 4、5、6? iOS 7、8、9?你在什么平台上开发?视窗,MacOS?你在使用CLI, SDK or Build 吗?请不要假设答案,请阅读链接。一旦您在帖子中回答了问题,请在 cmets 中回复,以便我知道您已在帖子中添加信息。
  • 这是您的第一个混合应用吗?是的,您的目标平台及其目标版本是什么? Android 版本 5.1 你在什么平台上开发? windows 您使用的是 CLI、SDK 还是 Build ?科尔多瓦 CLI
  • 您必须解决的一个问题是遵循指示。显然,您无法按照指示进行操作。我现在看看你的帖子。我会在一小时内回复。

标签: cordova phonegap-plugins cordova-plugins


【解决方案1】:

@Pooja,
Stackoverflow 的问题之一,答案可能是正确的,但它可能不适用于您。现在就是这种情况。

在 #1) 如果您*正在*使用 Cordova CLI,那么它已经在为您构建 config.xml。因此,您没有理由直接创建或修改您的config.xml,除非添加您的应用程序id 或进行一些非常特殊的修改。

在 #2) 您的应用无法运行的原因是因为您使用的示例是为使用 IDE 的人设计的,例如 Eclipse 或 Android Studio。您发现的 SO 问题没有提及,答案也没有提及。我可以说是这种情况,因为&lt;feature&gt; 不用于Corodova CLI

我引用 Cordova 文档 -> The config.xml file -> Feature 元素

特征元素

如果您使用 CLI 构建应用程序,您可以使用 plugin 命令启用设备 API。这不会修改顶级 config.xml 文件,因此该元素不适用于您的工作流程。

如果您直接在 SDK 中工作并使用特定于平台的 config.xml 文件作为源,则可以使用该标记来启用设备级 API 和外部插件。它们通常与特定平台的 config.xml 文件中的自定义值一起出现。例如,以下是为 Android 项目指定设备 API 的方法:

在 #3,如 cmets 所述,您甚至没有理由查看 AndroidManifest.xml,除非您有充分的理由。所以这只不过是一个red herring

在#4上,很高兴您已包含cordova.js。忽略这一点是一个常见的错误。所以,你已经领先了。

在#5上,您的错误很可能是因为您的 config.xml 不正确,“插件”没有被加载。

最后,因为你离基地太远了——犯了太多错误,我只想给你答案。此外,您所犯的错误并不少见。我经常这样做,这种类型的错误很常见。

您的修复

简而言之,您需要start over,构建“hello world”应用程序,然后正确添加插件。我可以给你一个快速的解决方案,但这只会让你感到困惑。

如果你觉得你 learn better from videos,这里有一些我看过的视频,它们会朝着正确的方向前进。

最后,由于您犯了一些非常常见的错误,本常见问题解答也应该有所帮助。
Top Mistakes by Developers new to Cordova/Phonegap

【讨论】:

    【解决方案2】:

    删除你安装的插件

    cordova plugin rm org.apache.cordova.media
    

    并安装最新版本的插件

    cordova plugin add cordova-plugin-media
    

    【讨论】:

      猜你喜欢
      • 2020-05-11
      • 2016-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-27
      • 2023-03-31
      相关资源
      最近更新 更多