zoukankan      html  css  js  c++  java
  • Manifest merger failed with multiple errors, see logs 问题处理

    首先致谢: https://www.jianshu.com/p/a22c55a28064, 我们不生产代码, 我们只做大自然的搬运工!

    一.【问题背景】 项目导入第三方(OPPO 和魅族 厂商推送)提供的aar 文件,报错

    错误描述:Manifest merger failed with multiple errors, see logs

    打开详细gradle报错日志,发现是执行任务processDebugManifest报错:

    org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:processDebugManifest'
    Caused by: java.lang.RuntimeException: Manifest merger failed with multiple errors, see logs
        at com.android.builder.core.AndroidBuilder.mergeManifestsForApplication(AndroidBuilder.java:558)
        at com.android.build.gradle.tasks.ProcessApplicationManifest.doFullTaskAction(ProcessApplicationManifest.java:208)
        at com.android.build.gradle.internal.tasks.IncrementalTask.taskAction(IncrementalTask.java:106)

    二. 【原因定位】使用命令查看更详细日志

    gradlew processDebugManifest -stacktrace 

    详细日志:

    uses-sdk:minSdkVersion 17 cannot be smaller than version 19 declared in library [:com.heytap.msp:] C:UsersMostone-0030.gradlecaches	ransforms-2files-2.1812e2e860b0bf2a7996e395481d6e5c9AndroidManifest.xml as the library might be using APIs not availa
    ble in 17
            Suggestion: use a compatible library with a minSdk of at most 17,
                    or increase this project's minSdk version to at least 19,
                    or use tools:overrideLibrary="com.heytap.mcssdk" to force usage (may lead to runtime failures)


    See http://g.co/androidstudio/manifest-merger for more information about the manifest merger.

    三. 【解决方案】

    当我们项目Manefest的某些属性和第三方库中Manefest的属性有冲突会报上面的错误。
    比如第三方库中也定义了icon、allowBackup等属性,且会与你的项目不同,则发生冲突,编译就会报错。
    解决办法就是在我们项目的Application节点中加入tools:replace来替换三方库中的相关属性,如下:(根据实际情况)
    <application
     ...
     tools:replace="android:allowBackup,android:icon">
     ...
     <uses-sdk tools:overrideLibrary="com.heytap.mcssdk,com.meizu.cloud.pushinternal" />

    还有一种方案就是去掉第三方库中冲突的属性。

    总结: 核心代码

    使用命令查看更详细日志,快速定位bug 并解决

    gradlew processDebugManifest -stacktrace 
    以一颗童心善待生活
  • 相关阅读:
    CentOS/Linux安装VNCserver
    vncserver的安装和使用
    linux下常用FTP命令 1. 连接ftp服务器
    linux下安装dovecot
    教你如何架设linux邮件服务器postfix
    vim打开文件时显示行号
    VirtualBox 配置虚拟网卡(桥接),实现主机-虚拟机网络互通
    Linux文件权限详解
    虚拟机下CentOS 6.5配置IP地址的三种方法
    Linux基础知识之man手册的使用
  • 原文地址:https://www.cnblogs.com/lizhilin2016/p/13209679.html
Copyright © 2011-2022 走看看