【问题标题】:CORDOVA: Missing 'name' key attributeCORDOVA:缺少“名称”键属性
【发布时间】:2017-06-06 10:15:47
【问题描述】:

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

元素使用权限上缺少“名称”键属性 AndroidManifest.xml:14:5-84 AndroidManifest.xml:15:5-78 元素使用权限上缺少“名称”键属性 AndroidManifest.xml:16:5-90 元素使用权限上缺少“名称”键属性 FAILURE:构建失败并出现异常。

  • 出了什么问题:任务 ':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>

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

【问题讨论】:

    标签: android cordova android-manifest cordova-plugins


    【解决方案1】:

    您需要在属性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>
    

    【讨论】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-18
      • 1970-01-01
      • 2017-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多