Android - PhoneGap 错误:解析 XML 时出错:未绑定前缀

问题描述 投票:0回答:3

我重新启动了eclipse,错误在同一行更改为“错误:解析XML时出错:未绑定前缀”

我正在尝试在我的 Android PhoneGap 应用程序中使用 this 插件。这是一个本地通知插件。我的 config.xml 文件中的这一行出现错误:

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

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

这是我的 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="[email protected]">
    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 一起使用(无需本地通知插件即可正常工作)。我使用的是cordova 2.9.0版本。 我该如何解决这个问题?

java javascript xml cordova phonegap-plugins
3个回答
57
投票

您需要添加 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">

祝你好运!


18
投票

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

phonegap run android

change wrong xml attributes in AndroidManifest.xml

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

我通过从控制台中的项目根目录运行

adb logcat
发现了上述问题。

如果您想过滤任何日志文件的输出,您可以通过使用

grep
后跟关键字(例如 error 或 mergemanifest)轻松完成:

adb logcat | grep error

将“错误”替换为您在 logcat 中查找的内容


0
投票

非常感谢您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>
© www.soinside.com 2019 - 2024. All rights reserved.