返回

解决 Android 构建错误:“超过一个文件具有操作系统无关的路径 'META-INF/LICENSE'”

Android

超过一个文件具有操作系统无关的路径 'META-INF/LICENSE':如何修复构建错误

问题概述

在构建 Android 应用时,你可能遇到以下错误:

错误:执行任务 ':app:transformResourcesWithMergeJavaResForDebug' 失败。超过一个文件具有操作系统无关的路径 'META-INF/LICENSE'

这个错误表明存在重复的 'META-INF/LICENSE' 文件,导致构建过程失败。

解决方案

有两种方法可以解决此错误:

排除重复的 'META-INF/LICENSE' 文件

在你的 build.gradle 文件中,添加以下代码块:

packagingOptions {
    exclude 'META-INF/DEPENDENCIES'
    exclude 'META-INF/NOTICE'
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/LICENSE.txt'
    exclude 'META-INF/NOTICE.txt'
}

此代码会排除重复的 'META-INF/LICENSE' 文件,从而解决错误。

更新 LeakCanary 库

你还可以通过更新 LeakCanary 库来解决错误。将以下依赖项添加到你的 build.gradle 文件:

debugCompile 'com.squareup.leakcanary:leakcanary-android:2.7'
releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:2.7'
testCompile 'com.squareup.leakcanary:leakcanary-android-no-op:2.7'

更新库将解决缺少 com.squareup.leakcanary.internal.HeapAnalyzerService 类的问题。

选择最适合你的解决方案

如果你使用的是 LeakCanary 的最新版本,则排除重复的 'META-INF/LICENSE' 文件是更简单的解决方案。但是,如果你无法更新 LeakCanary 库,则更新库是必要的。

注意

在排除重复 'META-INF/LICENSE' 文件时,可能会导致第三方库出现问题。如果你遇到任何问题,请尝试更新 LeakCanary 库。

常见问题解答

  1. 为什么会出现这个错误?

    • 重复的 'META-INF/LICENSE' 文件会导致构建过程失败。
  2. 如何确定哪个文件包含重复的 'META-INF/LICENSE' 文件?

    • 构建过程中的错误信息通常会指出重复文件的位置。
  3. 排除重复文件是否会影响我的应用?

    • 排除 'META-INF/LICENSE' 文件不会影响你的应用的功能。它只是从构建过程中删除重复的文件。
  4. 我需要更新 LeakCanary 吗?

    • 如果你正在使用 LeakCanary 的最新版本,则不需要更新。如果你遇到缺少 com.squareup.leakcanary.internal.HeapAnalyzerService 类的错误,则需要更新库。
  5. 我尝试了上述解决方案,但仍然遇到错误。我该怎么办?

    • 检查你的 build.gradle 文件是否存在拼写或语法错误。如果你仍然遇到问题,请在 Stack Overflow 或 Android Developers 社区寻求帮助。