问题 Cordova Android复制了两个插件的使用功能


我使用两个不同的插件到cordova,两者都有相同的 uses-feature,一个 android:required="false" 一个没有。

这会导致构建时出错:

processDebugManifest
/path/to/project/platforms/android/AndroidManifest.xml:31:5 Error:
    Element uses-feature#android.hardware.camera at AndroidManifest.xml:31:5 duplicated with element declared at AndroidManifest.xml:27:5
/path/to/project/platforms/android/AndroidManifest.xml:32:5 Error:
    Element uses-feature#android.hardware.camera.autofocus at AndroidManifest.xml:32:5 duplicated with element declared at AndroidManifest.xml:28:5
/path/to/project/platforms/android/AndroidManifest.xml:0:0 Error:
    Validation failed, exiting
:processDebugManifest FAILED
.....
ERROR building one of the platforms: Error: /path/to/project/platforms/android/cordova/build: Command failed with exit code 1
You may not have the required environment or OS to build this project

编译后的清单在构建时具有以下内容:

...
    <uses-feature android:name="android.hardware.camera" android:required="false" />
    <uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />
    <uses-feature android:name="android.hardware.camera.flash" android:required="false" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-feature android:name="android.hardware.camera" />
    <uses-feature android:name="android.hardware.camera.autofocus" />
...

有什么办法可以解决这个问题吗?


cordova版本5.4.1


10178
2017-12-29 12:08


起源



答案:


1.打开插件/ [你的插件名称] /plugin.xml

2.删除此行:

`<uses-feature android:name="android.hardware.camera" android:required="false" />`

3.重建你的项目


7
2018-02-24 09:14



这只是一个临时修复。任何时候我重新安装库,这个问题都会回来。我实际上对我的项目应用了类似的“修复”,但我认为这是cordova中的一个问题,它不会检查内部属性 uses-features 声明。 - Automatico
我经常遇到这种情况。即使从plugin.xml手动删除条目也无法始终修复它。它就像它正在为构建拉动它,即使它没有更新插件文件夹中的内容。这非常令人沮丧。 - Arian Kulp
使用Cordova 6.2.0,我不得不从平台/ android / AndroidManifest.xml和platforms / android / android.json中删除重复的行以使构建工作。 - Dan Wyman
推荐+1,但这应该由Cordova插件安装脚本解决。我们为多个应用程序自动化构建,这个问题打破了这个过程。 - eugene
我已尝试在plugin.xml中删除该行,但在构建过程中它再次添加它,然后将无法构建,因为它抱怨AndroidManifest.xml中的重复摄像头条目 - user1435853


答案:


1.打开插件/ [你的插件名称] /plugin.xml

2.删除此行:

`<uses-feature android:name="android.hardware.camera" android:required="false" />`

3.重建你的项目


7
2018-02-24 09:14



这只是一个临时修复。任何时候我重新安装库,这个问题都会回来。我实际上对我的项目应用了类似的“修复”,但我认为这是cordova中的一个问题,它不会检查内部属性 uses-features 声明。 - Automatico
我经常遇到这种情况。即使从plugin.xml手动删除条目也无法始终修复它。它就像它正在为构建拉动它,即使它没有更新插件文件夹中的内容。这非常令人沮丧。 - Arian Kulp
使用Cordova 6.2.0,我不得不从平台/ android / AndroidManifest.xml和platforms / android / android.json中删除重复的行以使构建工作。 - Dan Wyman
推荐+1,但这应该由Cordova插件安装脚本解决。我们为多个应用程序自动化构建,这个问题打破了这个过程。 - eugene
我已尝试在plugin.xml中删除该行,但在构建过程中它再次添加它,然后将无法构建,因为它抱怨AndroidManifest.xml中的重复摄像头条目 - user1435853


  1. 除了删除plugins.xml文件中的重复行之外,还可以转到[your project] /platforms/android/android.json并删除文件中的重复行。

  2. 在再次编译项目之前重新打开命令终端。


4
2018-05-25 17:29





我有一个关于cordova-plugin-camera和phonegap-plugin-barcodescanner的理智问题。我的修复:

ionic cordova platform rm android
ionic cordova platform rm ios    
ionic cordova plugin rm phonegap-plugin-barcodescanner
rm -r plugins
rm -r node_modules
rm package-lock.json

接下来删除package.json的phonegap-plugin-barcodescanner。 跑:

npm install
ionic cordova platform add android

接下来做一个新的构建:

ionic cordova run android

接下来再次添加插件:

ionic cordova plugin add phonegap-plugin-barcodescanner

3
2018-01-11 17:24





以下步骤帮助我解决了这个问题:

  1. 从config.xml中删除重复的元素

  2. 从platform / android / android.json文件中删除重复的对象。

  3. 从platform / android / app / src / main / AndroidManifest.xml文件中删除重复的元素。

  4. 关闭IDE /文本编辑器(特别是在使用VS代码时)。

  5. 现在运行'cordova build android'。


0
2017-08-10 14:15