Когда я одновременно использую плагин phonegap-plugin-barcodescanner и плагин cordova-plugin-qrscanner в проекте, он не будет компилироваться для платформы Android.Ошибка, которую он выводит, является дублирующим элементом разрешения в манифесте.После проверки я увидел, что это действительно так.Однако ручная коррекция не работает, так как она будет восстановлена автоматически.
Я задокументировал сценарий воспроизведения ниже.Это очень просто.Может быть, у кого-то есть идеи, как решить эту проблему?Или вы думаете, что это ошибка?Но где мне открыть вопрос в таком случае?
Используемая версия: Ionic: 3.20.0 cordova: 8.0.0
Шаги для воспроизведения:
- Начните новый проект
ionic start permissionissue blank
(когда он спросит, следует ли интегрироваться с платформой iOS и Android, скажите «да», когда он попросит установить ProSDK, скажите «нет» - Перейдите в папку проекта:
cd permissionissue
- Построить это:
ionic cordova build --release android
-> Все еще все в порядке - Установить первый плагин:
ionic cordova plugin add phonegap-plugin-barcodescanner
- Построить это:
ionic cordova build --release android
-> Все еще все в порядке - Установите второй плагин:
ionic cordova plugin add cordova-plugin-qrscanner
- Попробуйте построить его:
ionic cordova build --release android
-> Теперь он ломается
Появится следующая ошибка:
> Manifest merger failed with multiple errors, see logs
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or
--debug
option to get more log output.
* Get more help at https://help.gradle.org
BUILD FAILED in 4s
23 actionable tasks: 3 executed, 20 up-to-date
(node:12659) UnhandledPromiseRejectionWarning: Error: .../permissionissue/platforms/android/gradlew: Command failed with exit code 1 Error output:
.../permissionissue/platforms/android/app/src/main/AndroidManifest.xml:19:5-90 Error:
Element uses-permission#android.permission.CAMERA at AndroidManifest.xml:19:5-90 duplicated with element declared at AndroidManifest.xml:16:5-65
.../permissionissue/platforms/android/app/src/main/AndroidManifest.xml:20:5-85 Error:
Element uses-feature#android.hardware.camera at AndroidManifest.xml:20:5-85 duplicated with element declared at AndroidManifest.xml:18:5-84
.../permissionissue/platforms/android/app/src/main/AndroidManifest.xml Error:
Validation failed, exiting
FAILURE: Build failed with an exception.
Сгенерированный манифест выглядит следующим образом:
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.FLASHLIGHT" />
<uses-feature android:name="android.hardware.camera" android:required="true" />
<uses-permission android:name="android.permission.CAMERA" android:required="false" />
<uses-feature android:name="android.hardware.camera" android:required="false" />
<uses-feature android:name="android.hardware.camera.front" android:required="false" />
Как вы можете видеть, КАМЕРА однажды запрашивается сама по себе, а однажды с требуемым ложным.