【问题标题】:Android - phonegap error: Error parsing XML: unbound prefixAndroid - phonegap 错误:解析 XML 时出错:未绑定前缀
【发布时间】:2014-01-14 14:02:22
【问题描述】:

我重启了eclipse,错误在同一行变成了“error: Error parsing XML: unbound prefix”

我正在尝试在我的 android phonegap 应用程序中使用 this 插件。它是一个本地通知插件。我在这一行的 config.xml 文件中收到错误:

<gap:plugin name="de.appplant.cordova.plugin.local-notification" version="0.6.2" />

关于这个问题here有一个类似的问题,但答案与我的问题无关。

这是我的 config.xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<widget xmlns     = "http://www.w3.org/ns/widgets"
        id        = "com.xxx.xxx"
        version   = "2.0.0">
    <name>xxx</name>

    <description>
    xxx
    </description>

    <author href="http://www.example.com" email="xxx@yahoo.com">
    xxx
    </author>

    <access origin="*"/>

    <!-- <content src="xxx" /> for external pages -->
    <content src="index.html" />

    <preference name="loglevel" value="DEBUG" />
    <!--
      <preference name="splashscreen" value="resourceName" />
      <preference name="backgroundColor" value="0xFFF" />
      <preference name="loadUrlTimeoutValue" value="20000" />
      <preference name="InAppBrowserStorageEnabled" value="true" />
      <preference name="disallowOverscroll" value="true" />
    -->

    <feature name="App">
      <param name="android-package" value="org.apache.cordova.App"/>
    </feature>
    <feature name="Geolocation">
      <param name="android-package" value="org.apache.cordova.GeoBroker"/>
    </feature>
    <feature name="Device">
      <param name="android-package" value="org.apache.cordova.Device"/>
    </feature>
    <feature name="Accelerometer">
      <param name="android-package" value="org.apache.cordova.AccelListener"/>
    </feature>
    <feature name="Compass">
      <param name="android-package" value="org.apache.cordova.CompassListener"/>
    </feature>
    <feature name="Media">
      <param name="android-package" value="org.apache.cordova.AudioHandler"/>
    </feature>
    <feature name="Camera">
      <param name="android-package" value="org.apache.cordova.CameraLauncher"/>
    </feature>
    <feature name="Contacts">
      <param name="android-package" value="org.apache.cordova.ContactManager"/>
    </feature>
    <feature name="File">
      <param name="android-package" value="org.apache.cordova.FileUtils"/>
    </feature>
    <feature name="NetworkStatus">
      <param name="android-package" value="org.apache.cordova.NetworkManager"/>
    </feature>
    <feature name="Notification">
      <param name="android-package" value="org.apache.cordova.Notification"/>
    </feature>
    <feature name="Storage">
      <param name="android-package" value="org.apache.cordova.Storage"/>
    </feature>
    <feature name="FileTransfer">
      <param name="android-package" value="org.apache.cordova.FileTransfer"/>
    </feature>
    <feature name="Capture">
      <param name="android-package" value="org.apache.cordova.Capture"/>
    </feature>
    <feature name="Battery">
      <param name="android-package" value="org.apache.cordova.BatteryListener"/>
    </feature>
    <feature name="SplashScreen">
      <param name="android-package" value="org.apache.cordova.SplashScreen"/>
    </feature>
    <feature name="Echo">
      <param name="android-package" value="org.apache.cordova.Echo"/>
    </feature>
    <feature name="Globalization">
      <param name="android-package" value="org.apache.cordova.Globalization"/>
    </feature>
    <feature name="InAppBrowser">
      <param name="android-package" value="org.apache.cordova.InAppBrowser"/>
    </feature>
    <!-- Deprecated plugins element. Remove in 3.0 -->


    <plugins>
        <plugin name="SplashScreen" value="org.apache.cordova.SplashScreen"/>
        <gap:plugin name="de.appplant.cordova.plugin.local-notification" version="0.6.2" />
    </plugins>

</widget>

我正在使用带有 adt 插件的 eclipse。我生成了一个 android 应用程序并对其进行了一些修改,以便它可以与 phonegap 一起使用(它可以在没有本地通知插件的情况下正常工作)。我正在使用科尔多瓦 2.9.0 版本。 我该如何解决这个问题?

【问题讨论】:

  • 显示错误信息
  • 以及您尝试添加插件的方式、您使用的是什么版本的 phonegap、您使用的是 phonegap build、CLI ... 如果您需要帮助,您应该更准确地了解什么你在做。
  • 我刚刚更新了我的问题。
  • 您是否为 AndroidManifest 添加了权限?
  • 是的。现在我有完整的权限列表。

标签: java javascript xml cordova phonegap-plugins


【解决方案1】:

您需要添加一个 xml 命名空间。

  xmlns:gap="http://phonegap.com/ns/1.0"

您的根 xml 应该如下所示:

  <widget id="com.example.MyApp" 
    version="1.0.0" xmlns="http://www.w3.org/ns/widgets" 
    xmlns:gap="http://phonegap.com/ns/1.0">

祝你好运!

【讨论】:

  • 对于android:something 属性(如@mrmoree 的答案中显示的示例),将以下内容添加到&lt;widget&gt; 标记:xmlns:android="http://schemas.android.com/apk/res/android"&gt;
  • @drdrej 嗨,我正在使用 那么我将在小部件中写什么??
【解决方案2】:

对我来说,问题是我的清单文件中的一个不可解释的属性。 将标记为绿色的红色更改为绿色(见截图),确保您已连接您的安卓设备并再次运行phonegap run android

使用 adb logcat 发现构建和运行时问题 对于 android,您可以使用 logcat 输出来调试您的 phonegap/cordova 应用程序。 在 iOS 上使用 xcode 的 logcat 输出

我通过在控制台的项目根目录中运行adb logcat 发现了上述问题。

如果您想过滤任何日志文件的输出,您可以使用grep 后跟关键字(例如错误或合并清单)轻松完成:

adb logcat | grep error

用您在 logcat 中查找的任何内容替换“错误”

【讨论】:

  • 或者只是将android命名空间添加到你的xml xmlns:android="http://schemas.android.com/apk/res/android"
  • David 的命名空间建议正是我所需要的。
【解决方案3】:

非常感谢mrmoree!该线程为我指明了正确的方向。我在 ionic-cordova 构建的 config.xml 的最终版本中遇到了类似的问题,得到了这个错误:

.../platforms/android/app/src/main/res/xml/config.xml:51:AAPT:错误: 未绑定的前缀。

我必须切换 xml 标记格式以使 name="android.permission.CAMERA" platform="android" 中断而不是 android:name="android.permission.CAMERA" 才能工作。现在效果很好。

<platform name="android">
    <config-file parent="/*" target="AndroidManifest.xml">
        <uses-permission name="android.permission.CAMERA" platform="android" />
        <uses-permission name="android.permission.RECORD_AUDIO" platform="android" />
        <uses-permission name="android.permission.MODIFY_AUDIO_SETTINGS" platform="android" />
    </config-file>
</platform>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-09
    • 1970-01-01
    • 2023-03-25
    • 2015-01-27
    • 1970-01-01
    • 1970-01-01
    • 2012-08-07
    • 2012-12-22
    相关资源
    最近更新 更多