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:\Users\Mostone-0030\.gradle\caches\transforms-2\files-2.1\812e2e860b0bf2a7996e395481d6e5c9\AndroidManifest.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 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM