Cordova默认的config.xml URI未注册。

9
我正在尝试使用Cordova构建安卓应用。但是,在创建项目、添加安卓平台并将其导入到Android Studio后,我遇到了config.xml的一些问题。虽然我没有更改任何内容,但仍然遇到了以下错误:“URI is not registered for xmlns:cdv”。整个XML文件如下:
<?xml version='1.0' encoding='utf-8'?>
<widget id="xxx.xxx.xxx" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
    <preference name="loglevel" value="DEBUG" />
    <feature name="Whitelist">
        <param name="android-package" value="org.apache.cordova.whitelist.WhitelistPlugin" />
        <param name="onload" value="true" />
    </feature>
    <allow-intent href="market:*" />
    <name>xxxx</name>
    <description>
        A sample Apache Cordova application that responds to the deviceready event.
    </description>
    <author email="dev@cordova.apache.org" href="http://cordova.io">
        Apache Cordova Team
    </author>
    <content src="view/index.html" />
    <access origin="*" />
    <allow-intent href="http://*/*" />
    <allow-intent href="https://*/*" />
    <allow-intent href="tel:*" />
    <allow-intent href="sms:*" />
    <allow-intent href="mailto:*" />
    <allow-intent href="geo:*" />
    <feature name="SplashScreen">
        <param name="android-package" value="org.apache.cordova.splashscreen.SplashScreen" />
        <param name="onload" value="true" />
    </feature>
    <platform name="android">
        <icon src="res/drawable-ldpi/icon.png" density="ldpi" />
        <icon src="res/android-mdpi/icon.png" density="mdpi" />
        <icon src="res/android-hdpi/icon.png" density="hdpi" />
        <icon src="res/android-xhdpi/icon.png" density="xhdpi" />
    </platform>
</widget>
2个回答

4

解决方案:

添加以下两个文件:

  • http://www.w3.org/ns/widgets
  • http://cordova.apache.org/ns/1.0

到你的 被忽略的模式和DTDs 中:

文件 > 设置 > 语言和框架 > 模式和DTD > 被忽略的模式和DTDs

TL;DR:

Android Studio 错误地 假定这些XML命名空间用于验证你的xml(它们不是),因此它希望你注册URI。这是不必要的,因为这些XML命名空间声明不引用任何内容,也不验证任何内容——它们仅作为任意和唯一的名称存在。

当我研究此问题时,这是一个难以理解的概念,因此为了清晰起见,我将引用来自W3C推荐的直接引用:

为了实现其预期目的,命名空间名称应具有唯一性和持久性特征。它不是一个目标,也不能直接用于检索模式(如果存在)。

因此,解决方案是忽略URI,因为它实际上没有引用模式。


嗨。我有同样的问题,但另外还有第三个URI:http://schemas.android.com/apk/res/android。加上它安全吗? - Jinxi
@Jinxi,是的,将任何URI添加到“已忽略的模式和DTD”中可能是“安全”的,但将“android.com” URI添加进去肯定是安全的。 - Design.Garden

0

我只是忽略了这个错误。看起来它并没有产生任何不良影响。应用程序仍然可以运行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接