【发布时间】:2018-12-25 02:29:15
【问题描述】:
当我在一个项目中同时使用 phonegap-plugin-barcodescanner 插件和 cordova-plugin-qrscanner 插件时,它不会为 android 平台编译。它输出的错误是清单中的重复权限元素。经过检查,我发现情况确实如此。但是手动更正不起作用,因为它会自动重新生成。
我进一步记录了复制场景。这很简单。也许有人知道如何解决这个问题?或者你认为这是一个错误?但是在这种情况下我应该在哪里打开问题呢?
使用过的版本: 离子:3.20.0 科尔多瓦: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.
生成的 Manifest 如下所示:
<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" />
如您所见,CAMERA 曾经被自己请求一次,并且一次被要求为 false。
【问题讨论】:
标签: ionic-framework ionic3 ionic-native