如何修复'重复复制的文件在APK' Android Studio中出错?

时间:2018-01-28 12:45:13

标签: android android-studio runtime-error

我的Android应用程序是一个简单的登录/注册应用程序。

运行代码时遇到的错误是:

  

错误:任务':app:transformResourcesWithMergeJavaResForDebug'执行失败。   com.android.build.api.transform.TransformException:com.android.builder.packaging.DuplicateFileException:在APK org / apache / http / version.properties中复制的重复文件

     

File1:C:\ Users \ Admin \ AndroidStudioProjects \ App \ app \ libs \ apache-httpcomponents-httpcore.jar       File2:C:\ Users \ Admin \ AndroidStudioProjects \ App \ app \ libs \ http-core-4.1.jar

文件1和文件2是我包含在libs文件夹中的库。

我的AndroidManifest.xml文件:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

    package="com.example.admin.app">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity"
            android:label="App">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

我的app/build.gradle文件:

apply plugin: 'com.android.application'

    android {
        useLibrary 'org.apache.http.legacy'
        compileSdkVersion 26
        buildToolsVersion "26.0.1"
        defaultConfig {
            applicationId "com.example.admin.app"
            minSdkVersion 14
            targetSdkVersion 26
            versionCode 1
            versionName "1.0"
            multiDexEnabled true
            testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        } }

    dependencies {
        compile fileTree(include: ['*.jar'], dir: 'libs')
        androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
            exclude group: 'com.android.support', module: 'support-annotations'
        })
        compile 'com.android.support:appcompat-v7:26.+'
        testCompile 'junit:junit:4.12'
        compile files('libs/apache-httpcomponents-httpcore.jar')
        compile files('libs/httpclient-4.0.3.jar')
        compile files('libs/http-core-4.1.jar')
        compile 'com.android.support:multidex:1.0.0' }
}

修改-1:

我覆盖了库文件并运行了代码并得到了这个错误:

  

错误:任务&#39;:app:transformClassesWithJarMergingForDebug&#39;执行失败。   com.android.build.api.transform.TransformException:java.util.zip.ZipException:重复条目:org / apache / http / ProtocolException.class

请帮忙。谢谢!

1 个答案:

答案 0 :(得分:0)

根据错误日志,您的最终APK包含重复文件,这通常意味着您的2个依赖项在最终APK中添加了2个相同的文件以导致此问题。

您可以通过在build.gradle文件中添加以下内容,在最终APK中排除特定文件:

android {
     packagingOptions {
         exclude '...'
     }
 }  

将此添加到build.gradle中,并且不要忘记将“...”替换为重复文件的名称(它需要绝对路径)。

PS:我建议使用Retrofit library在Android应用中执行网络连接