【问题标题】:Error:duplicate files during packaging of APK Android Studio Error错误:APK Android Studio 打包过程中出现重复文件错误
【发布时间】:2015-08-02 14:27:33
【问题描述】:

在运行应用程序时,Android Studio 中出现意外错误,以下是出现的错误消息

错误:打包 APK 时文件重复 /home/jithu/libs/android/android/aa/app/build/outputs/apk/app-debug-unaligned.apk 存档路径:META-INF/DEPENDENCIES 来源 1: /home/jithu/.gradle/caches/modules-2/files-2.1/org.apache.httpcomponents/httpmime/4.3.6/cf8bacbf0d476c7f2221f861269365b66447f7ec/httpmime-4.3.6.jar 起源2: /home/jithu/.gradle/caches/modules-2/files-2.1/org.apache.httpcomponents/httpcore/4.4.1/f5aa318bda4c6c8d688c9d00b90681dcd82ce636/httpcore-4.4.1.jar

我也在粘贴我的 build.gradle 文件

 apply plugin: 'com.android.library'

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"

    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:appcompat-v7:+'
    compile 'com.google.android.gms:play-services:6.5.87'
    compile 'com.squareup.picasso:picasso:2.5.2'
    compile 'com.mcxiaoke.volley:library:1.0.15'
    compile 'com.google.code.gson:gson:2.2.4'
    compile "org.apache.httpcomponents:httpcore:4.4.1"
    compile "org.apache.httpcomponents:httpmime:4.3.6"


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

【问题讨论】:

  • 删除 compile "org.apache.httpcomponents:httpmime:4.3.6" 并尝试..
  • 我做到了,但那个时候它允许我编译但给出以下错误 java.lang.NoClassDefFoundError: org.apache.http.entity.ContentType 05-20 18:44:58.485: E/ AndroidRuntime(395):在 org.apache.http.entity.mime.content.FileBody.(FileBody.java:89)
  • @HareshChhelana 你可以看到我已经添加了排除语句。仍然给我错误,并且正在使用最新版本的工作室。
  • @MD 如果我删除 httpmime 我们将得到以下类错过错误 import org.apache.http.entity.mime.HttpMultipartMode;导入 org.apache.http.entity.mime.MultipartEntityBuilder;导入 org.apache.http.entity.mime.content.FileBody;这些都不见了

标签: java android android-studio


【解决方案1】:

你错过了构建 gradle 的流程。 当您尝试使用 2 android {..} sn-p 时,它没有检测到第二个。因此,您排除重复的元文件不起作用。

可能的解决方案:

只需更改构建 gradle 的顺序,如下所示:

    apply plugin: 'com.android.library'    
    android {
        compileSdkVersion 21
        buildToolsVersion "21.1.2"

        defaultConfig {
            minSdkVersion 14
            targetSdkVersion 21
            versionCode 1
            versionName "1.0"
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
        packagingOptions {
            exclude 'META-INF/DEPENDENCIES'
            exclude 'META-INF/NOTICE'
            exclude 'META-INF/LICENSE'
            exclude 'META-INF/LICENSE.txt'
            exclude 'META-INF/NOTICE.txt'
        }
    }
dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:appcompat-v7:+'
    compile 'com.google.android.gms:play-services:6.5.87'
    compile 'com.squareup.picasso:picasso:2.5.2'
    compile 'com.mcxiaoke.volley:library:1.0.15'
    compile 'com.google.code.gson:gson:2.2.4'
    compile "org.apache.httpcomponents:httpcore:4.4.1"
    compile "org.apache.httpcomponents:httpmime:4.3.6"


}

如果还是不行,请查看以下内容:

它是你的库构建 gradle 吗? 我从主要项目构建 gradle 中排除了重复的元文件。因此,请确保将元文件从 app 模块的构建 gradle 中排除,而不是从库模块中排除。

【讨论】:

  • 您是否从库构建 gradle 中移动了项目构建 gradle 中的“packagingOptions{..}”部分。您是否注意到,您的项目中有多个构建 gradle 文件。
  • 现在可以了,我将排除从库更改为应用程序
  • 但我有一个问题,排除此文件是否会在运行时产生任何问题或会影响任何功能?
  • 不!元文件不影响应用程序的任何编程功能。元文件基本上包含文本信息,如开源库的法律声明、许可证等。排除它不会影响任何事情。在下一条评论中,我还将分享我们为什么要排除它。
  • 当我们使用多个第三方开源库时,有时 2 个或更多项目具有相同命名的文本文件(例如:License.txt 或 Notice.txt 或 dependencies.txt)。这会导致构建期间发生冲突。在那一刻,我们强大的 android 工作室建议我们排除那些冲突的元文件。
猜你喜欢
  • 2015-06-21
  • 2015-12-11
  • 2014-04-23
  • 2015-12-20
  • 1970-01-01
  • 2016-06-19
相关资源
最近更新 更多