web-dev-qa-db-ja.com

Android St​​udio 0.4 APK META-INF / LICENSE.txtにコピーされた重複ファイル

Studioを0.3.7から0.4.0に更新した後、プロジェクトをコンパイルできません。 stackoverflowで解決策を見つけました: 重複ファイルのコピー(Android Studio 0.4.0)

プロジェクトをgradle 0.7。+に更新しましたが、次の文字列をどこに配置する必要があるのか​​わかりません。

Android {

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

私のlogcat:ログ

Execution failed for task ':Prog:packageDebug'.
> Duplicate files copied in APK META-INF/LICENSE.txt
    File 1: /home/scijoker/AndroidStudioProjects/ProgProject/Prog/libs/httpclient-4.1.1.jar
    File 2: /home/scijoker/AndroidStudioProjects/ProgProject/Prog/libs/httpclient-4.1.1.jar

追伸Ubuntu 13.04で開発する

113
a.black13

依存関係を一番上に配置し、packageOptionsを最後に配置するとうまくいきました。

apply plugin: 'Android'. 

これは、appフォルダーにあるbuild.gradleの完全版です。

dependencies {
    compile 'com.Android.support:support-v4:+'
    compile files('libs/Apache-mime4j-0.6.jar')
    compile files('libs/httpmime-4.0.jar')
}

Android {
    compileSdkVersion 19
    buildToolsVersion "19.0.1"

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


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

編集:ほとんどすべてのOSライセンスには、「ライセンスのコピーをプロジェクトに含める」義務が含まれています。つまり、使用するすべてのOSライセンスのコピーをプロジェクトに含める必要があるということです。それらを段階的に「除外」することにより、ライセンスに違反します。

それらをプロジェクトから除外するのは最良の選択肢ではないかもしれません。どうもありがとう情報のために。

154
biniam

注意!! OpenSourceライセンス違反の可能性。

上記のようにlicense.txtファイルを除外すると、ソースに追加することに同意することがオープンソースライセンスの一般的なポイントであるため、一部のオープンソースライセンスに違反する可能性があります。オープンソースライセンスを確認してください。

更新:より良い解決策が見つかるまで、

packagingOptions {
   pickFirst  'META-INF/license.txt'
}

このように、少なくともライセンス義務の一部を果たします

46
R.S

追加するだけ

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

build.gradleで

23
shankey

次のコードをproject/app/build.gradleに追加することで修正できます。

Android {
    // Fixed build error : Duplicate files copied in APK META-INF/xxx
    packagingOptions {
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/LICENSE.txt'
    }
}
16
AlfredZhong

私はgradleの新しいバージョンごとに同じ問題に直面していました、以下のbuild.gradleテキスト形式の作業:

私のlibsフォルダーには2つのジャクソンjarファイルがあります。

Android {
         compileSdkVersion 21
         buildToolsVersion "21.1.2"

         defaultConfig {
            applicationId "com.omtlab.myapplication"
            minSdkVersion 14
            targetSdkVersion 21
            versionCode 1
            versionName "1.0"
         }
         buildTypes {
             release {
                 minifyEnabled false
                 proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
            }
         }
         packagingOptions {
            exclude 'libs/jackson-core-asl-1.9.13.jar'
            exclude 'libs/jackson-mapper-asl-1.9.13.jar'
            exclude 'META-INF/ASL2.0'
            exclude 'META-INF/LICENSE'
            exclude 'META-INF/NOTICE'
         }
}

dependencies {
    //compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.Android.support:appcompat-v7:21.0.3'
    compile files('libs/jackson-core-asl-1.9.13.jar')
    compile files('libs/jackson-mapper-asl-1.9.13.jar')
}
11
Dhiral Pandya

このコードを挿入しながら

Android{

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

MAKE SURE if in errorそれが表示されている

> APKでコピーされた重複ファイルMETA-INF/LICENSE.txt

それから加えて

 Android{

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

}

エラーの場合

> APKにコピーされた重複ファイルMETA-INF/LICENSE

それから加えて

 Android{

packagingOptions{
    exclude 'META-INF/LICENSE'
 }

}

エラーの場合

> APK META-INF/license.txtにコピーされた重複ファイル

それから加えて

 Android{

packagingOptions{
    exclude 'META-INF/license.txt'
 }

}

短いテキストでは、CASEとドキュメントFORMAT(.txt)が非常に重要です。

(このエラーはAndroid St​​udio 1.1.0にも存在します)

8
Shreekant N

追加:

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

私のために働いた、biniam_Ethiopiaのソリューションはおそらく最もフェイルセーフです

8
Jan Wilmans

これは問題の解決に役立ちます

packagingOptions {
    exclude 'META-INF/ASL2.0'
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/NOTICE'
    exclude 'META-INF/LICENSE.txt'
    exclude 'META-INF/NOTICE.txt'
    exclude 'META-INF/DEPENDENCIES'
}
6
Suresh Sarak
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'
}

build.gradleファイルに追加してプロジェクトを同期

4
Gajendra kumar

2を追加するだけです。

Android{

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

}
3
josedlujan

Java-jwtjackson-coreを一緒に使用する場合は、次を使用します。

exclude("META-INF/maven/com.fasterxml.jackson.core/jackson-annotations/pom.properties")
exclude("META-INF/maven/com.fasterxml.jackson.core/jackson-annotations/pom.xml")
exclude("META-INF/maven/com.fasterxml.jackson.core/jackson-core/pom.properties")
exclude("META-INF/maven/com.fasterxml.jackson.core/jackson-core/pom.xml")
exclude("META-INF/maven/com.fasterxml.jackson.core/jackson-databind/pom.properties")
exclude("META-INF/maven/com.fasterxml.jackson.core/jackson-databind/pom.xml")
2
Olcay Ertaş

同様のエラーが発生し、packingOptions()およびexclude関数を使用せずに解決しました。 2つの依存関係を追加しましたが、1つは最初の依存関係のサブグループでした。これによりエラーが発生し、そのうちの1つを削除すると、クリーンビルドになりました。依存関係ブロック内で同様のエラーをチェックすることをお勧めします。

2
Android Amature

これは非常に悪い習慣かもしれませんが、複数の大きなライブラリを含める場合は、これらの種類の競合を何百も経験することになります。

そのような場合の超簡単な修正を以下にリストします。

Android { 
    ....
    packagingOptions {
        // Allow the compilation process to choose the dependencies for us.
        pickFirst "**"
    }
}
1
Mapsy