在 APK META-INF/mimetypes.default 中复制的重复文件

Posted

技术标签:

【中文标题】在 APK META-INF/mimetypes.default 中复制的重复文件【英文标题】:Duplicate Files Copied in APK META-INF/mimetypes.default 【发布时间】:2016-12-27 16:39:56 【问题描述】:

我正在开发一个android app。最近我从我的项目中删除了activation.jarmail.jar,然后将它们添加回来。将它们添加回来后,在尝试运行我的 application 时,我收到以下错误:

Error:Execution failed for task 
':app:transformResourcesWithMergeJavaResForDebug'     
com.android.build.api.transform.TransformException: 
com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK META-INF/mimetypes.default

File1: C:\Android\Workspace\WeekendMovieRating\app\libs\activation.jar
File2: C:\Android\Workspace\WeekendMovieRating\app\libs\mail.jar

我搜索了解决方案并尝试了以下解决方案;

packagingOptions 
    exclude 'META-INF/DEPENDENCIES.txt'
    exclude 'META-INF/LICENSE.txt'
    exclude 'META-INF/NOTICE.txt'
    exclude 'META-INF/NOTICE'
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/DEPENDENCIES'
    exclude 'META-INF/notice.txt'
    exclude 'META-INF/license.txt'
    exclude 'META-INF/dependencies.txt'

我在gradle.properties 中添加了上述代码并尝试运行application,但仍然收到相同的error

然后我在观察我的error 消息后添加了以下代码:

exclude 'META-INF/mimetypes.default'
exclude 'META-INF/mailcap.default'

添加上述行后,它显示为BUILD SUCCESSFULL,但显示为240 errors

Error:warning: Ignoring InnerClasses attribute for an anonymous inner class
Error:(com.sun.mail.imap.DefaultFolder$1) that doesn't come with an
Error:associated EnclosingMethod attribute. This class was probably produced by a
...
...
... 
Error:indicate that it is *not* an inner class.
:app:validateDebugSigning
:app:packageDebug
:app:zipalignDebug
:app:fullDebugBuildInfoGenerator
:app:assembleDebug
Information:BUILD SUCCESSFUL
Information:Total time: 1 mins 47.694 secs
Information:240 errors
Information:0 warnings

请发表您的答案。在此先感谢

【问题讨论】:

在添加库之前可以尝试清理吗? 嗨 Eenvincible,我在添加 jar 文件之前删除了 jar filescleaned project,但仍然收到相同的错误。 【参考方案1】:

您遇到的错误与 Proguard 相关,与您最初发布的重复文件问题无关。

您应该相应地更新您的标题和描述以反映这一点。

除非您提供有关 proguard 问题的更详细信息,否则很难解决。

您可以查看similar 问题,了解您需要添加到 proguard 配置中的内容。

【讨论】:

titledescription 是什么意思? 我应该如何post 提供有关proguard issue 的更多信息? 我只是说您的原始问题具有误导性,因此我建议您编辑有关 Proguard 而不是 META-INF 的原始问题。以及添加适当的标签以获得更好的曝光。 您应该在此处将完整的“240 proguard 错误”作为公共 github gist/pastebin 发布。所以我们可以更好地了解这个问题。我想如果你不知道什么 proguard/或对保留它不感兴趣。您可以简单地禁用它。 我删除了activation.jarmail.jar,然后添加了新的activation.jarmail.jar。添加new jars 创建了问题。我删除了newly added jars 并添加了我首先删除的back up jars。这解决了问题。【参考方案2】:
packagingOptions 
    pickFirst 'META-INF/mailcap.default'

    pickFirst 'META-INF/LICENSE.txt'
    exclude 'META-INF/DEPENDENCIES'
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/LICENSE.txt'
    exclude 'META-INF/license.txt'
    exclude 'META-INF/NOTICE'
    exclude 'META-INF/NOTICE.txt'
    exclude 'META-INF/notice.txt'
    exclude 'META-INF/ASL2.0'
    exclude 'META-INF/mimetypes.default'
    exclude 'META-INF/mailcap.default'

将此用于打包选项

【讨论】:

以上是关于在 APK META-INF/mimetypes.default 中复制的重复文件的主要内容,如果未能解决你的问题,请参考以下文章

如何在android项目里导入apk文件

安卓手机如何打开.apk文件?

Flutter 卡在安装 build\app\outputs\apk\app.apk

安卓手机怎么打开apk文件

在 alpha 测试中删除 apk 以上传具有相同版本代码的不同 apk

在 Android 中获取拆分 APK 信息