エラー:: APKのパッケージ化中にファイルが重複しています


144

Android Studio。アプリケーションの実行中にこの種のエラーが発生します。

Error:Execution failed for task ':app:packageDebug'. Duplicate files copied in APK META-INF/notice.txt

build.gradle

apply plugin: 'android'

android {
    compileSdkVersion 19
    buildToolsVersion "19.0.1"

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

    defaultConfig {
        minSdkVersion 7
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}

dependencies {
    compile 'com.android.support:appcompat-v7:19.0.1'
    compile 'com.j256.ormlite:ormlite-android:4.48'
    compile 'org.codehaus.jackson:jackson-core-asl:1.9.13'
    compile 'org.codehaus.jackson:jackson-mapper-asl:1.9.13'
    compile 'com.octo.android.robospice:robospice:1.4.11'
    compile 'com.octo.android.robospice:robospice-spring-android:1.4.11'
}

このエラーを修正するにはどうすればよいですか?

編集済み

これらの除外オプションは私の問題を解決しました:

packagingOptions {
        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'
    }


2
これは重複していません!他の質問者はexludeオプションを追加してエラーを修正しました。しかし、皆さんが見ることができるように、私はこれらのオプションを追加し、私の問題は消えませんでした。
Robertas Setkus 2014年


この問題についてどんな考えがあるstackoverflow.com/questions/30364950/...
Jithu PS

それは私のものも解決しました。感謝
Reshma

回答:


56

文字列の比較では大文字と小文字が区別されると思います。で試すexclude 'META-INF/notice.txt'


私の答えはのnotice.txt代わりに試すことでしたNOTICE.txtか?エラーは実際には、除外が発生するエラーとは異なります。あなたの中にMETA-INF/notice.txtファイルがありますsrc/main/resources/か?
Xavier Ducrohet 2014年

申し訳ありませんが、ザビエル。その時私はあなたの答えを理解しませんでした。今、私はあなたが何を意味したかを見ることができます。に変更しようとしましたexclude 'META-INF/notice.txt'が、コンソールがそれを促しましたDuplicate files copied in APK META-INF/NOTICE.txt。奇妙ですね。のresources下にディレクトリはありませんC:\PathToAndroidStudioProject\src\main
Robertas Setkus 2014年

1
exclude 'META-INF/notice.txt'との両方を指定した場合exclude 'META-INF/NOTICE.TXT'、機能しますか?
Xavier Ducrohet 2014年

ありがとう。それは役に立ちました。:)
Robertas Setkus 2014年

1
「アンドロイド」部分でのbuild.gradleファイルで、追加しよう: packagingOptions { exclude 'META-INF/ASL2.0' exclude 'META-INF/LICENSE' }
Krystian

22

build.gradleにこれらのオプションのみを含める必要があると思います:

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

1
最後にこれを実装した後、私はこのクエリを解決しました。おかげで男:)
Hardik Joshi 2015

10

短い答え:

を使用して詳細なgradle出力を確認しgradle assemble、重複しているファイルをメモして、それらを使用して除外します:

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

長い答え:

assembleコマンドラインからgradleタスクを実行して、詳細な出力を確認します。

./gradlew assemble || gradle assemble

これにより、除外する対象が自動的に表示されます。

studioWorkspace/CCDroid git:(master)  ± ./gradlew assembleDebug
:app:preBuild
:app:compileDebugNdk UP-TO-DATE
:app:preDebugBuild
:app:checkDebugManifest
:app:preReleaseBuild
:app:prepareComAndroidSupportAppcompatV72200Library UP-TO-DATE
:app:prepareComAndroidSupportSupportV42200Library UP-TO-DATE
:app:prepareDebugDependencies
:app:compileDebugAidl UP-TO-DATE
:app:compileDebugRenderscript UP-TO-DATE
:app:generateDebugBuildConfig UP-TO-DATE
:app:generateDebugAssets UP-TO-DATE
:app:mergeDebugAssets UP-TO-DATE
:app:generateDebugResValues UP-TO-DATE
:app:generateDebugResources UP-TO-DATE
:app:mergeDebugResources UP-TO-DATE
:app:processDebugManifest UP-TO-DATE
:app:processDebugResources UP-TO-DATE
:app:generateDebugSources UP-TO-DATE
:app:compileDebugJava UP-TO-DATE
:app:preDexDebug UP-TO-DATE
:app:dexDebug UP-TO-DATE
:app:processDebugJavaRes UP-TO-DATE
:app:validateDebugSigning
:app:packageDebug
Error: duplicate files during packaging of APK /Users/shubham/code/studioProjects/CCDroid/app/build/outputs/apk/app-debug-unaligned.apk
    Path in archive: LICENSE
    Origin 1: /Users/shubham/.gradle/caches/modules-2/files-2.1/org.projectlombok/lombok/1.14.8/8ac073941721e0b521ec8e8bad088b1e7b8cd332/lombok-1.14.8.jar
    Origin 2: /Users/shubham/.gradle/caches/modules-2/files-2.1/org.mockito/mockito-all/1.8.4/5c97d8b6e715ed941aeb93d6fc401ab3eb18a566/mockito-all-1.8.4.jar
You can ignore those files in your build.gradle:
    android {
      packagingOptions {
        exclude 'LICENSE'
      }
    }
:app:packageDebug FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:packageDebug'.
> Duplicate files copied in APK LICENSE
    File 1: /Users/shubham/.gradle/caches/modules-2/files-2.1/org.projectlombok/lombok/1.14.8/8ac073941721e0b521ec8e8bad088b1e7b8cd332/lombok-1.14.8.jar
    File 2: /Users/shubham/.gradle/caches/modules-2/files-2.1/org.projectlombok/lombok/1.14.8/8ac073941721e0b521ec8e8bad088b1e7b8cd332/lombok-1.14.8.jar


* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 11.863 secs

この部分を出力で確認します。

android {
  packagingOptions {
    exclude 'LICENSE'
  }
}

重複ファイル(LICENSE)を作成した依存関係のリストも表示されます。出力でOrigin#の行を確認します。


この問題についてどんな考えがあるstackoverflow.com/questions/30364950/...
Jithu PS

1
それは私にとって正しい答えでしたが、私はあなたの答えをほとんど無視しました。私は投稿の上部に回答を配置することをお勧めします:android {PackagingOptions {exclude 'LICENSE'}}に続いて説明と長いgradle出力(これはほとんど回答に関係ありません。この部分はこれらのファイルを無視できます) build.gradle:android {
PackagingOptions

できました。@gorbysbmに感謝します。
Shubham Chaudhary、2015

6

これをbuild.gradleファイルに追加します...

packagingOptions {
exclude 'META-INF/NOTICE' // will not include NOTICE file
exclude 'META-INF/LICENSE' // will not include LICENSE file
exclude 'META-INF/DEPENDENCIES' // will not include LICENSE file
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
}

このような...

android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
    applicationId "your package name"
    minSdkVersion 14
    targetSdkVersion 25
    versionCode 30
    versionName "3.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
packagingOptions {
    exclude 'META-INF/NOTICE' // will not include NOTICE file
    exclude 'META-INF/LICENSE' // will not include LICENSE file
    exclude 'META-INF/DEPENDENCIES' // will not include LICENSE file
    exclude 'META-INF/LICENSE.txt'
    exclude 'META-INF/NOTICE.txt'
}
}

3

それは複数のエラーです、あなたは正しいです。

apply plugin: 'android-library'

これを追加 :: android { packagingOptions { exclude 'META-INF/ASL2.0' exclude 'META-INF/LICENSE' exclude 'META-INF/NOTICE' } }

1つ目のエラーはファイルの重複によるもので、2つ目はLICENSEおよびNOTICEファイルによるものです。それは後に動作します

編集::問題の特定についてはこちらの投稿を参照してください:: Android Gradleプラグイン0.7.0:「APKのパッケージ化中にファイルが重複しています」


この問題についてどんな考えがあるstackoverflow.com/questions/30364950/...
Jithu PS

1

これは私のために働く

android {
...

    packagingOptions {
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/ASL2.0'
        exclude 'META-INF/notice.txt'
        exclude 'META-INF/license.txt'
    }
}

1

興味深いことに、この行をgradleから削除すると、うまくいきました:

compile 'org.apache.commons:commons-lang3:3.3.1'

0

私はpackageingOptionsの正しい場所を見つけるために少し遊んでいました。jackson-core:2.2.2jackson-databind:2.2.2の間の競合に関する重複ファイルの問題の解決 また、DSLは最近変更されたようですので、最近のAndroid Studio 1.4.1のbuildTools 23では、androidを配置する必要があります。 compileOptionsと同じレベルのパッケージ化オプションであり、モデル{android {ブレース!

model { 
   android {
        compileSdkVersion = 21
        buildToolsVersion = "23.0.1"

        defaultConfig.with {
              applicationId = "com.android.sensorgraph"
              minSdkVersion.apiLevel = 21
              targetSdkVersion.apiLevel = 22
        }
   }

   android.packagingOptions {
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/NOTICE'
   }
   compileOptions.with {
        sourceCompatibility = JavaVersion.VERSION_1_7
        targetCompatibility = JavaVersion.VERSION_1_7
   }
} 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.