Android 科尔多瓦:失踪';名称';关键属性

Android 科尔多瓦:失踪';名称';关键属性,android,cordova,android-manifest,cordova-plugins,Android,Cordova,Android Manifest,Cordova Plugins,我正在尝试创建一个简单的Cordova插件,但当我尝试构建它时,会出现以下错误: 元素上缺少“name”键属性,在处使用权限 AndroidManifest.xml:14:5-84 在AndroidManifest.xml中,元素uses权限上缺少“name”键属性:15:5-78 在AndroidManifest.xml处的元素uses权限上缺少“name”键属性:16:5-90 失败:生成失败,出现异常 错误:任务“:processDebugManifest”的执行失败。 清单合并失败,出

我正在尝试创建一个简单的Cordova插件,但当我尝试构建它时,会出现以下错误:

元素上缺少“name”键属性,在处使用权限 AndroidManifest.xml:14:5-84 在AndroidManifest.xml中,元素uses权限上缺少“name”键属性:15:5-78 在AndroidManifest.xml处的元素uses权限上缺少“name”键属性:16:5-90 失败:生成失败,出现异常

  • 错误:任务“:processDebugManifest”的执行失败。 清单合并失败,出现多个错误,请参阅日志

这是我的插件的AndroidManifest.xml:

<?xml version="1.0" encoding="UTF-8"?>
<plugin xmlns="http://apache.org/cordova/ns/plugins/1.0"
    xmlns:android="http://schemas.android.com/apk/res/android"
    id="cordova-plugin-pluginTest"
    version="1.0.0">

  <description>
    Cordova Plugin
  </description>

    <license>MIT</license>

    <engines>
    <engine name="cordova" version=">=6.0" />
    </engines>

    <js-module src="www/index.js" name="index">
      <clobbers target="window.plugins.pluginTest" />
    </js-module><!--  -->

    <!-- android -->
    <platform name="android">
      <config-file target="res/xml/config.xml" parent="/*">
        <feature name="pluginTest">
          <param name="android-package" value="pluginTest.plugin.cordova.pluginTest"/>
        </feature>
      </config-file>
      <config-file target="AndroidManifest.xml" parent="/*">
        <uses-permission name="android.permission.WRITE_SETTINGS" platform="android"/>
        <uses-permission name="android.permission.INTERNET" platform="android"/>
        <uses-permission name="android.permission.ACCESS_NETWORK_STATE" platform="android"/>
        <uses-permission name="android.permission.CHANGE_NETWORK_STATE" platform="android"/>
        <uses-permission name="android.permission.ACCESS_WIFI_STATE" platform="android"/>
        <uses-permission name="android.permission.CHANGE_WIFI_STATE" platform="android"/>
      </config-file>

      <source-file src="src/android/pluginTest.java" target-dir="src/pluginTest/plugin/cordova"/>
    </platform>

</plugin>

科尔多瓦插件
麻省理工学院

我做错了什么?有什么建议吗?

您需要在属性
name
前面加上
android:
名称空间。您还可以摆脱
platform=“android”
,因为这是不必要的:

  <config-file target="AndroidManifest.xml" parent="/*">
    <uses-permission android:name="android.permission.WRITE_SETTINGS"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
  </config-file>

在我的例子中,一个category标签有一个空值,如下所示:

<intent-filter>
    ...
    <category
        android:name="" />
</intent-filter>

...

因此,请确保您的AndroidManifest文件中没有任何名称属性为空。

谢谢您的帮助,我非常感谢。不幸的是,它不工作,我仍然得到相同的错误。原因是我刚刚注意到,当我运行“cordova build android”时,AndroidManifest.xml被覆盖。因此,如果我按照您的建议将其修改为“”的话,则会再次添加“”。你认为这是一个清单合并问题吗?您有什么建议吗?您需要从一个新的
AndroidManifest.xml
开始,将平台删除并重新添加到测试项目中:
cordova platform rm android和&cordova platform add android