Кордова Android дублирует использование-функции из двух плагинов

Я использую два разных плагина в кордове, которые имеют одинаковый 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

Ответ 1

1. Откройте плагины/[ваше имя плагина]/plugin.xml

2. удалите эту строку:

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

3. перестройте свой проект

Ответ 2

  • В дополнение к удалению повторяющихся строк в файле plugins.xml перейдите в [ваш проект]/platforms/android/android.json и удалите повторяющиеся строки в файле.

  • Повторно запустите свой командный терминал, прежде чем компилировать проект.

Ответ 3

У меня была нормальная проблема с Cordova-плагином-камерой и телефоном-плагином-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

Затем удалите файл phonegap-plug-barcodescanner пакета package.json. Run:

npm install
ionic cordova platform add android

Далее выполните новую сборку:

ionic cordova run android

Затем добавьте плагин еще раз:

ionic cordova plugin add phonegap-plugin-barcodescanner

Ответ 4

Следующие шаги помогли мне решить эту проблему:

  1. Удалите дубликаты элементов из вашего config.xml

  2. Удалите дубликаты объектов из файла платформы /android/android.json.

  3. Удалите дубликаты элементов из файла платформы /android/app/src/main/AndroidManifest.xml.

  4. Закройте вашу IDE/текстовый редактор (особенно если вы используете VS Code).

  5. Теперь запустите 'Cordova build android'.

Ответ 5

Вот как это наконец-то сработало для нас в нашем проекте Ionic 3. Вы должны удалить одну из повторяющихся записей с platforms/android/AndroidManifest.xml:

<manifest ...>
    ...
    <uses-feature android:name="android.hardware.camera"/>
    ...
    <uses-feature android:name="android.hardware.camera" android:required="true" />
</manifest>

А также с platforms/android/android.json:

{
  "xml": "<uses-feature android:name=\"android.hardware.camera\" />",
  "count": 1
},
...
{
  "xml": "<uses-feature android:name=\"android.hardware.camera\" android:required=\"true\" />",
  "count": 1
}

PS: Мы делаем эту настройку только при добавлении платформы Android, а не при каждой сборке.

Ответ 6

простой cmd для вашей проблемы:

cordova clean 
cordova build