Android 构建错误:在路径“META-INF/NOTICE.md”中找到 2 个文件

问题描述 投票:0回答:1

我的 Android 应用程序未构建。

有趣的是,它暗示了我:

添加包装块可能会有帮助,请参考

如果我添加packaging,那么它会再次失败并建议添加packagingOptions,所以它让我发疯,不知道它是否期望包装或包装选项,但无论如何它们似乎都不起作用。

这是我最初的包装选项部分:

packagingOptions {
        resources {
            pickFirsts += ['META-INF/LICENSE.txt']
            excludes += ['META-INF/NOTICE.md', 'META-INF/LICENSE.md', 'META-INF/INDEX.LIST', 'META-INF/DEPENDENCIES', 'META-INF/io.netty.versions.properties']
        }
    }

不起作用,接下来是我当前的build.gradle(注释的代码都是我尝试过的组合):

android {
    ...
    packaging {
        resources {
            resources.excludes.add("META-INF/NOTICE.md")
            resources.excludes.add("META-INF/LICENSE.md")
            resources.excludes.add("META-INF/INDEX.LIST")
            resources.excludes.add("META-INF/DEPENDENCIES")
            resources.excludes.add("META-INF/io.netty.versions.properties")

            /*pickFirsts += ['META-INF/LICENSE.txt']
            excludes += ['META-INF/NOTICE.md', 'META-INF/LICENSE.md', 'META-INF/INDEX.LIST', 'META-INF/DEPENDENCIES', 'META-INF/io.netty.versions.properties']*/
        }
        //resources.excludes.add("META-INF/*")
    }
  ...
}

我已经使用助手将 gradle 迁移到最新的 8.5 版本(并且,为了以防万一,还更新了所有库)。

当然,在发布之前我已经检查了所有类似的线程,但它们都没有帮助我。

它过去可以工作,但经过一些更新后 - 不确定是什么 - 它停止工作了。

现在包装块正确设置后,它会抱怨:

添加包装块可能会有帮助,请参考

什么?我已经在 android {} 块内有一个包装块。

顺便说一句:帮助

https://developer.android.com/reference/tools/gradle-api/8.0/com/android/build/api/dsl/ResourcesPackagingOptions#excludes()

没有帮助。

接下来要尝试什么?

android kotlin gradle build
1个回答
0
投票

有趣的是,我如此坚持,大多数时候都在回答自己。

详细检查构建日志后,我发现导致 gradle 抱怨的“META-INF/NOTICE.md”文件位于接下来的两个包中:

com.sun.mail:android-mail:1.6.7
com.sun.mail:android-activation:1.6.7

我记得我正在使用这个包在应用程序内发送电子邮件,但决定评论android-activation来测试构建是否仍然会抱怨,令我惊讶的是它仍然在抱怨。

什么???我问自己,当我禁用其中一个软件包时,META-INF/NOTICE.md 怎么可能仍然重复?

结果是在以下文件夹中有一个缓存的jar文件jetified-android-activation-1.6.7.jar

/Users/myname/.gradle/caches/transforms-4/cdb8986a59c9b6d77240a4c4c934fcba/transformed/

我无法理解在“清理项目”并评论 build.gradle 中的包后,此类文件仍然存在,但在重命名文件后构建成功。

我们开发人员必须经常处理的奇怪事情......

我还不明白为什么应用程序仍然会在评论 com.sun.mail:android-activation 的情况下构建,因为我确信该包与 com.sun.mail:android-mail- 一起用于电子邮件发送,但事实是它不仅构建正确,而且发送电子邮件也没有问题。

希望可以帮助任何面临同样烦人问题的人。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.