在同时使用条形码扫描器和qrscanner时,Android Build Error

时间:2018-05-27 16:59:57

标签: ionic-framework ionic3 ionic-native

当我在项目中同时使用phonegap-plugin-barcodescanner插件和cordova-plugin-qrscanner插件时,它不会为android平台编译。它输出的错误是清单中的重复权限元素。检查后,我发现情况确实如此。但手动校正不起作用,因为它会自动重新生成。

我进一步记录了再现情景。这很简单。也许有人知道如何解决这个问题?或者你认为这是一个错误?但是在这种情况下我应该在哪里打开这个问题?

二手版本: 离子:3.20.0 cordova:8.0.0

重现的步骤:

  1. 启动一个新项目ionic start permissionissue blank(当它询问是否应该与iOS和Android平台集成时说是,当它要求安装ProSDK时说不
  2. 转到项目文件夹:cd permissionissue
  3. 构建它:ionic cordova build --release android - >一切都很好
  4. 安装第一个插件:ionic cordova plugin add phonegap-plugin-barcodescanner
  5. 构建它:ionic cordova build --release android - >一切都很好
  6. 安装第二个插件:ionic cordova plugin add cordova-plugin-qrscanner
  7. 尝试构建它:ionic cordova build --release android - >现在它打破了
  8. 它将显示以下错误:

    > 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曾经被自己一次请求,一次被要求假。

1 个答案:

答案 0 :(得分:0)

我使用cordova-plugin-camera-preview和cordova-plugin-qrscanner遇到了类似的问题

帮助我的是: 1.转到plugins / cordova-plugin-qrscanner / plugin.xml

  1. 删除
  2. 中的条目

<config-file target="AndroidManifest.xml" parent="/*"> ... </config-file>

  1. 运行 ionic cordova platform remove android

  2. 运行 ionic cordova platform add android

这是<platform>的{​​{1}}中我的plugin.xml部分的样子

cordova-plugin-qrscanner

为我工作,希望它能对您有所帮助。