CORDOVA:缺少 'name' 关键属性
CORDOVA: Missing 'name' key attribute
我正在尝试创建一个简单的 Cordova 插件,但是当我尝试构建它时出现此错误:
Missing 'name' key attribute on element uses-permission at
AndroidManifest.xml:14:5-84
Missing 'name' key attribute on element uses-permission at AndroidManifest.xml:15:5-78
Missing 'name' key attribute on element uses-permission at AndroidManifest.xml:16:5-90
FAILURE: Build failed with an exception.
- What went wrong: Execution failed for task ':processDebugManifest'.
Manifest merger failed with multiple errors, see logs
这是我的插件 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>
在我的例子中,其中一个类别标签有一个空值,如下所示:
<intent-filter>
...
<category
android:name="" />
</intent-filter>
因此请确保 AndroidManifest 文件中的 none 名称属性为空。
我正在尝试创建一个简单的 Cordova 插件,但是当我尝试构建它时出现此错误:
Missing 'name' key attribute on element uses-permission at AndroidManifest.xml:14:5-84 Missing 'name' key attribute on element uses-permission at AndroidManifest.xml:15:5-78 Missing 'name' key attribute on element uses-permission at AndroidManifest.xml:16:5-90 FAILURE: Build failed with an exception.
- What went wrong: Execution failed for task ':processDebugManifest'.
Manifest merger failed with multiple errors, see logs
这是我的插件 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>
在我的例子中,其中一个类别标签有一个空值,如下所示:
<intent-filter>
...
<category
android:name="" />
</intent-filter>
因此请确保 AndroidManifest 文件中的 none 名称属性为空。