在打包APK app-debug-unaligned.apk期间复制文件

时间:2014-08-25 10:01:17

标签: android http jar android-studio apache-commons-httpclient

当放入2个jar文件时,我收到此错误Duplicate files during packaging of APK app-debug-unaligned.apk

  • httpclient-4.3.5.jar

  • httpmime-4.3.5.jar

    libsSync with Gradle之后进入Run文件夹。

如果用户1 jar文件 - httpmime-4.3.5.jar,我不会收到此错误。

请帮助我如何避免此错误&还可以在上面使用2个jar文件,

谢谢,

p / s:我使用Android Studio版本0.8.6。

Error Detail

  

错误:在打包APK期间重复文件   ... \程序\编译\输出\ APK \ APP-调试unaligned.apk       存档路径:META-INF / DEPENDENCIES       原点1:... \ app \ libs \ httpclient-4.3.5.jar       原点2:... \ app \ libs \ httpmime-4.3.5.jar

build.gradle

android {
compileSdkVersion 20
buildToolsVersion '20.0.0'
defaultConfig {
    applicationId 'com.app'
    minSdkVersion 9
    targetSdkVersion 20
    versionCode 1
    versionName '1.0'
}
buildTypes {
    release {
        runProguard false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
productFlavors {
}
packagingOptions {
    exclude 'META-INF/LICENSE.txt'
}

dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:support-v4:20.0.0'
compile 'com.android.support:appcompat-v7:20.0.0'
compile 'com.google.android.gms:play-services:5.2.08'
compile 'com.viewpagerindicator:library:2.4.1@aar'
compile 'de.hdodenhof:circleimageview:1.2.0'
compile files('libs/httpmime-4.3.5.jar')
}

UPDATE我从compile files('libs/httpmime-4.3.5.jar')更改为使用Maven Link。将2个maven链接放在一起后,我再次遇到同样的错误:

    compile 'org.apache.httpcomponents:httpmime:4.4-alpha1'
compile 'org.apache.httpcomponents:httpcore:4.4-alpha1'

这是警告

  

警告:依赖org.apache.httpcomponents:httpclient:4.4-alpha1 is   因为调试可能与内部版本冲突而被忽略   由Android提供。            如果有问题,请用jarjar重新打包以更改类包

     

警告:依赖   org.apache.httpcomponents:httpclient:4.4-alpha1在发布时被忽略   因为它可能与提供的内部版本冲突   Android系统。            如果有问题,请用jar重新包装以更改类包

请帮我解决。

SOULITION 我现在知道一个好的答案,添加这些行会解决Duplicate files错误:

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'
    exclude 'META-INF/LGPL2.1'
}

5 个答案:

答案 0 :(得分:10)

您可以使用此编译compile files('libs/httpmime-4.3.5.jar')替换'org.apache.httpcomponents:httpmime:4.3.5'

此外,您正在复制已包含compile fileTree(include: ['*.jar'], dir: 'libs')

的依赖项compile files('libs/httpmime-4.3.5.jar')

答案 1 :(得分:8)

更新build.gradle并添加以下行

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

这将解决此错误。我得到了同样的错误,修复它。

答案 2 :(得分:0)

请将此更新为build.gradle文件。

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

答案 3 :(得分:0)

我现在更新了gradle它正在工作

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

答案 4 :(得分:-3)

将以下代码添加到依赖项

编译组:'org.apache.httpcomponents',名称:'httpclient-android',版本:'4.3.5'     compile(group:'org.apache.httpcomponents',name:'httpmime',version:'4.3.5'){     排除模块:'org.apache.httpcomponents:httpclient'     }

现在,如果你运行它会告诉你为什么它告诉重复可能是因为META-INF / NOTICE,META-INF / LICENSE,再加上它再次运行它可能会显示其他类型。 在android部分下添加如下所示 packagingOptions {         排除'META-INF / LICENSE.txt'         排除'META-INF / NOTICE'         排除'META-INF / LICENSE'     }

肯定会解决你的问题。

在构建之前从系统中删除所有依赖文件。