Android Gradleプラグイン0.7.0:「APKのパッケージ化中にファイルが重複しています」


324

Android Gradleプラグイン0.7.0を以下で使用するbuild.gradle

buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:0.7.0'
    }
}

apply plugin: 'android'

repositories {
    maven { url "https://android-rome-feed-reader.googlecode.com/svn/maven2/releases" }
    maven { url "http://dl.bintray.com/populov/maven" }
    mavenCentral()
}

android {
    compileSdkVersion 19
    buildToolsVersion '18.1.1'

    defaultConfig {
        minSdkVersion 9
        targetSdkVersion 19
    }
    buildTypes {
        release {
            runProguard true
            proguardFile getDefaultProguardFile('proguard-android-optimize.txt')
        }
    }
    productFlavors {
        defaultFlavor {
            proguardFile 'proguard-rules.txt'
        }
    }
    sourceSets {
        instrumentTest.setRoot('src/instrumentTest')
    }
}

configurations {
    apt
}

ext.androidAnnotationsVersion = '2.7.1';

dependencies {
    compile 'com.android.support:support-v4:18.0.0'

    compile 'com.viewpagerindicator:library:2.4.1@aar'

    compile 'com.google.code.android-rome-feed-reader:android-rome-feed-reader:1.0.0-r2'
    compile 'org.jdom:jdom:1.1.1-android-fork'

    apt "com.googlecode.androidannotations:androidannotations:${androidAnnotationsVersion}"
    compile "com.googlecode.androidannotations:androidannotations-api:${androidAnnotationsVersion}"

    compile 'com.google.code.gson:gson:2.2.4'
    compile 'com.j256.ormlite:ormlite-android:4.47'
    compile 'com.j256.ormlite:ormlite-core:4.47'
    compile 'org.springframework.android:spring-android-core:1.0.1.RELEASE'
    compile 'org.springframework.android:spring-android-rest-template:1.0.1.RELEASE'
    compile 'com.prolificinteractive:actionbarsherlock:4.3.1@aar'

    compile 'com.google.code.geocoder-java:geocoder-java:0.15'

    compile files('libs/CWAC-Pager.jar')
}

android.applicationVariants.all { variant ->
    aptOutput = file("${project.buildDir}/source/apt_generated/${variant.dirName}")
    println "****************************"
    println "variant: ${variant.name}"
    println "manifest:  ${variant.processResources.manifestFile}"
    println "aptOutput:  ${aptOutput}"
    println "****************************"

    variant.javaCompile.doFirst {
        println "*** compile doFirst ${variant.name}"
        aptOutput.mkdirs()
        variant.javaCompile.options.compilerArgs += [
                '-processorpath', configurations.apt.getAsPath(),
                '-AandroidManifestFile=' + variant.processResources.manifestFile,
                '-s', aptOutput
        ]
    }
}

エラーを与えますDuplicate files copied in APK META-INF/LICENSE.txt

WARNING: Dependency commons-logging:commons-logging:1.0.4 is ignored for defaultFlavorDebug as it may be conflicting with the internal version provided by Android.
         In case of problem, please repackage it with jarjar to change the class packages
WARNING: Dependency commons-logging:commons-logging:1.0.4 is ignored for defaultFlavorRelease as it may be conflicting with the internal version provided by Android.
         In case of problem, please repackage it with jarjar to change the class packages
Creating properties on demand (a.k.a. dynamic properties) has been deprecated and is scheduled to be removed in Gradle 2.0. Please read http://gradle.org/docs/current/dsl/org.gradle.api.plugins.ExtraPropertiesExtension.html for information on the replacement for dynamic properties.
Deprecated dynamic property: "aptOutput" on "com.android.build.gradle.internal.api.ApplicationVariantImpl_Decorated@5705013c", value: "/Users/david/Developer...".
****************************
variant: defaultFlavorDebug
manifest:  /Users/david/Developer/.../build/manifests/defaultFlavor/debug/AndroidManifest.xml
aptOutput:  /Users/david/Developer/.../build/source/apt_generated/defaultFlavor/debug
****************************
Deprecated dynamic property "aptOutput" created in multiple locations.
****************************
variant: defaultFlavorRelease
manifest:  /Users/david/Developer/.../build/manifests/defaultFlavor/release/AndroidManifest.xml
aptOutput:  /Users/david/Developer/.../build/source/apt_generated/defaultFlavor/release
****************************
:TravelGuard:compileDefaultFlavorDebugNdk UP-TO-DATE
:TravelGuard:preBuild UP-TO-DATE
:TravelGuard:preDefaultFlavorDebugBuild UP-TO-DATE
:TravelGuard:preDefaultFlavorReleaseBuild UP-TO-DATE
:TravelGuard:prepareComProlificinteractiveActionbarsherlock431Library UP-TO-DATE
:TravelGuard:prepareComViewpagerindicatorLibrary241Library UP-TO-DATE
:TravelGuard:prepareDefaultFlavorDebugDependencies
:TravelGuard:compileDefaultFlavorDebugAidl UP-TO-DATE
:TravelGuard:compileDefaultFlavorDebugRenderscript UP-TO-DATE
:TravelGuard:generateDefaultFlavorDebugBuildConfig UP-TO-DATE
:TravelGuard:mergeDefaultFlavorDebugAssets UP-TO-DATE
:TravelGuard:mergeDefaultFlavorDebugResources UP-TO-DATE
:TravelGuard:processDefaultFlavorDebugManifest UP-TO-DATE
:TravelGuard:processDefaultFlavorDebugResources UP-TO-DATE
:TravelGuard:generateDefaultFlavorDebugSources UP-TO-DATE
:TravelGuard:compileDefaultFlavorDebugJava
*** compile doFirst defaultFlavorDebug
/Users/david/Developer/.../src/main/java/com/travelguard/service/TravelGuardService.java:53: cannot find symbol
symbol  : class TravelGuardPrefs_
location: class com.travelguard.service.TravelGuardService
    TravelGuardPrefs_ travelGuardPrefs;
    ^
/Users/david/Developer/.../src/main/java/com/travelguard/ui/CategoriesActivity.java:14: cannot find symbol
symbol  : class AssistanceFragment_
location: package com.travelguard.ui.fragments
import com.travelguard.ui.fragments.AssistanceFragment_;
                                   ^
/Users/david/Developer/.../src/main/java/com/travelguard/ui/CategoriesActivity.java:16: cannot find symbol
symbol  : class CategoryFragment_
location: package com.travelguard.ui.fragments
import com.travelguard.ui.fragments.CategoryFragment_;
                                   ^
/Users/david/Developer/.../src/main/java/com/travelguard/ui/CategoriesActivity.java:17: cannot find symbol
symbol  : class ContactFragment_
location: package com.travelguard.ui.fragments
import com.travelguard.ui.fragments.ContactFragment_;
                                   ^
/Users/david/Developer/.../src/main/java/com/travelguard/ui/CountriesActivity.java:25: cannot find symbol
symbol  : class TravelGuardPrefs_
location: package com.travelguard.service
import com.travelguard.service.TravelGuardPrefs_;
                              ^
/Users/david/Developer/.../src/main/java/com/travelguard/ui/CountriesActivity.java:44: cannot find symbol
symbol  : class TravelGuardPrefs_
location: class com.travelguard.ui.CountriesActivity
    TravelGuardPrefs_ travelGuardPrefs;
    ^
/Users/david/Developer/.../src/main/java/com/travelguard/ui/InstructionsActivity.java:18: cannot find symbol
symbol  : class AssistanceFragment_
location: package com.travelguard.ui.fragments
import com.travelguard.ui.fragments.AssistanceFragment_;
                                   ^
/Users/david/Developer/.../src/main/java/com/travelguard/ui/InstructionsActivity.java:19: cannot find symbol
symbol  : class ContactFragment_
location: package com.travelguard.ui.fragments
import com.travelguard.ui.fragments.ContactFragment_;
                                   ^
/Users/david/Developer/.../src/main/java/com/travelguard/ui/InstructionsActivity.java:21: cannot find symbol
symbol  : class InstructionsFragment_
location: package com.travelguard.ui.fragments
import com.travelguard.ui.fragments.InstructionsFragment_;
                                   ^
/Users/david/Developer/.../src/main/java/com/travelguard/ui/MainActivity.java:36: cannot find symbol
symbol  : class TravelGuardPrefs_
location: package com.travelguard.service
import com.travelguard.service.TravelGuardPrefs_;
                              ^
/Users/david/Developer/.../src/main/java/com/travelguard/ui/MainActivity.java:40: cannot find symbol
symbol  : class AssistanceFragment_
location: package com.travelguard.ui.fragments
import com.travelguard.ui.fragments.AssistanceFragment_;
                                   ^
/Users/david/Developer/.../src/main/java/com/travelguard/ui/MainActivity.java:41: cannot find symbol
symbol  : class ContactFragment_
location: package com.travelguard.ui.fragments
import com.travelguard.ui.fragments.ContactFragment_;
                                   ^
/Users/david/Developer/.../src/main/java/com/travelguard/ui/MainActivity.java:55: cannot find symbol
symbol  : class TravelGuardPrefs_
location: class com.travelguard.ui.MainActivity
    TravelGuardPrefs_ travelGuardPrefs;
    ^
/Users/david/Developer/.../src/main/java/com/travelguard/ui/TermsActivity.java:17: cannot find symbol
symbol  : class TravelGuardPrefs_
location: package com.travelguard.service
import com.travelguard.service.TravelGuardPrefs_;
                              ^
/Users/david/Developer/.../src/main/java/com/travelguard/ui/TermsActivity.java:23: cannot find symbol
symbol  : class TravelGuardPrefs_
location: class com.travelguard.ui.TermsActivity
    TravelGuardPrefs_ travelGuardPrefs;
    ^
Note: Starting AndroidAnnotations annotation processing
Note: AndroidManifest.xml file found: /Users/david/Developer/.../build/manifests/defaultFlavor/debug/AndroidManifest.xml
Note: Number of files generated by AndroidAnnotations: 22
Note: Generating source file: com.travelguard.service.SmartTravellerService_
Note: Generating source file: com.travelguard.service.SmartTravellerWebservice_
Note: Generating source file: com.travelguard.service.TravelGuardPrefs_
Note: Generating source file: com.travelguard.service.TravelGuardService_
Note: Generating source file: com.travelguard.service.TravelGuardWebservice_
Note: Generating source file: com.travelguard.ui.AdviceActivity_
Note: Generating source file: com.travelguard.ui.CategoriesActivity_
Note: Generating source file: com.travelguard.ui.ContactDetailActivity_
Note: Generating source file: com.travelguard.ui.ContactListActivity_
Note: Generating source file: com.travelguard.ui.ContactTravelGuardActivity_
Note: Generating source file: com.travelguard.ui.CountriesActivity_
Note: Generating source file: com.travelguard.ui.InformationActivity_
Note: Generating source file: com.travelguard.ui.InstructionsActivity_
Note: Generating source file: com.travelguard.ui.MainActivity_
Note: Generating source file: com.travelguard.ui.TermsActivity_
Note: Generating source file: com.travelguard.ui.TravelGuardActivity_
Note: Generating source file: com.travelguard.ui.fragments.AdviceDetailFragment_
Note: Generating source file: com.travelguard.ui.fragments.AdviceFragment_
Note: Generating source file: com.travelguard.ui.fragments.AssistanceFragment_
Note: Generating source file: com.travelguard.ui.fragments.CategoryFragment_
Note: Generating source file: com.travelguard.ui.fragments.ContactFragment_
Note: Generating source file: com.travelguard.ui.fragments.InstructionsFragment_
Note: Time measurements: [Whole Processing = 913 ms], [Generate Sources = 358 ms], [Extract Manifest = 163 ms], [Process Annotations = 158 ms], [Extract Annotations = 120 ms], [Validate Annotations = 82 ms], [Find R Classes = 28 ms],
Note: Time measurements: [Whole Processing = 0 ms],
Note: Time measurements: [Whole Processing = 0 ms],
warning: The following options were not recognized by any processor: '[androidManifestFile]'
Note: /Users/david/Developer/.../src/main/java/com/travelguard/ui/ContactDetailActivity.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: /Users/david/Developer/.../src/main/java/com/travelguard/service/SmartTravellerService.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
:TravelGuard:preDexDefaultFlavorDebug UP-TO-DATE
:TravelGuard:dexDefaultFlavorDebug
:TravelGuard:processDefaultFlavorDebugJavaRes UP-TO-DATE
:TravelGuard:validateDebugSigning
:TravelGuard:packageDefaultFlavorDebug
Error: duplicate files during packaging of APK /Users/david/Developer/.../build/apk/TravelGuard-defaultFlavor-debug-unaligned.apk
    Path in archive: META-INF/LICENSE.txt
    Origin 1: /Users/david/.gradle/caches/modules-2/files-2.1/commons-httpclient/commons-httpclient/3.1/964cd74171f427720480efdec40a7c7f6e58426a/commons-httpclient-3.1.jar
    Origin 2: /Users/david/.gradle/caches/modules-2/files-2.1/commons-codec/commons-codec/1.2/397f4731a9f9b6eb1907e224911c77ea3aa27a8b/commons-codec-1.2.jar
:TravelGuard:packageDefaultFlavorDebug FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':TravelGuard:packageDefaultFlavorDebug'.
> Duplicate files copied in APK META-INF/LICENSE.txt
    File 1: /Users/david/.gradle/caches/modules-2/files-2.1/commons-httpclient/commons-httpclient/3.1/964cd74171f427720480efdec40a7c7f6e58426a/commons-httpclient-3.1.jar
    File 2: /Users/david/.gradle/caches/modules-2/files-2.1/commons-httpclient/commons-httpclient/3.1/964cd74171f427720480efdec40a7c7f6e58426a/commons-httpclient-3.1.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: 21.957 secs

Android Studioを更新する前の今朝、問題はありませんでした。何か案は?

編集:私は次のようなコマンドを実行することで一時的に修正することができました

zip -d spring-android-core-1.0.1.RELEASE.jar META-INF/notice.txt

すべての重複エラーがなくなるまで。



2
これはバグcode.google.com/p/android/issues/detail?id=61573のようです。なぜこのリリースで問題が発生し始めたのかはわかりません。
スコットバルタ

同じ問題で立ち往生。バグが解決されるまでAndroid Studio 0.3.7とGradleプラグイン0.6.3を使用することを決定
メンテ

6
あなたは文言を明確にする必要があります:あなたはgradle 0.7.0を使用していません-それはandroid gradleプラグインです。バージョン1.9.0でGradle(ラッパー付き)を使用するもの。間違った文言は混乱を招きます-与えられた文脈に加えて。
onigunn 2013

1
Gradle 0.9.1pickFirst以降で使用可能なオプションに注意してください。
JJD 2014

回答:


475

Android Studioバージョン0.8.14以降

追加する必要があります:

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

あなたのbuild.gradleファイルに。

歴史:

このバグのコメント14によると:https : //issuetracker.google.com/issues/36982149#comment14これはAndroid Gradleプラグインのv0.7.0のバグであり、0.7.1で間もなく修正される予定です。

以下は、0.7.1の追加に関するそのバグのメモです。

0.7.1はこの問題を修正したものです。

ファイルを除外するDSLは次のとおりです。

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

excludeステートメントはいくつでも追加できます。値はアーカイブパスです。ワイルドカードやグロブはまだサポートされていません。

ファイル名「LICENSE.txt」と「NOTICE.txt」では大文字と小文字が区別されます。「license.txt」と「notice.txt」も試してみてください。


12
ありがとう!'META-INF / NOTICE.txt'も除外する必要がありました;)
13

71
日々、私は、stackoverflowが登場する前に、プログラマーがリモートで生産的になることができたことに驚いています。修正をありがとう!代わりにMETA-INF / LICENSEと/ NOTICEを除外する必要がありました。(最新の
Gradle

3
編集する必要があるファイルとその場所はどこですか?ありがとう、Eyal。
eyal 2014年

2
@ um.anusorn Seanが、パッケージング中にライブラリからこれらのファイルを除外するGradleファイルの良い例を提供しました。これは私のものです:packagesOptions {exclude 'META-INF / LICENSE' exclude 'META-INF / NOTICE' exclude 'META-INF / DEPENDENCIES' exclude 'META-INF / license.txt' exclude 'META-INF / dependenices.txt 'exclude' META-INF / notice.txt '}
praneetloke

4
ビルドされたツールのv0.12にまだ蔓延しているバグ..ただ言う
Nilzor

149

私の場合、いくつかの追加の除外を含める必要がありました。これは正規表現を好まないようで、これを素晴らしいワンライナーにしました。

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

私は必要LICENSENOTICE私は追加した後commons-lang3
theblang 2014

これは私を助けました(私はAndroidAnnotations + Spring RESTテンプレートを持っています)。そのようなハックを追加する必要があるため、このIntelliJ製品は恐ろしくEclipseに似始めます...
javaxian

どれが影響するのかわからないが、これは本当に役立つ。
CopperCash 2014

私にとっては機能しませんが、Warning:Dependency org.apache.httpcomponents:httpclient:4.3は引き続き表示されます。Androidが提供する内部バージョンと競合している可能性があるため、デバッグでは無視されます。問題が発生した場合は、jarjarで再パッケージしてクラスパッケージを変更してください
VVB

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

4
.txtサフィックスが必要でした。
theblang 2014

1
私がしている他の何かが私をここに連れ戻しました、そして私は.txtサフィックスを必要としませんでした。YMMV(または時期によってはMMMV)だと思います。
theblang 2014年

31

サキボーイのコメントご覧ください!


時代遅れの答え

Gradle 0.9.1以降、以下がサポートされています。

android.packagingOptions {
    pickFirst 'META-INF/LICENSE.txt'
}

詳細については、Gradleリリースノートをご覧ください。


3
開発者はオープンソースソフトウェアを使用するときにこれらのファイルを含める義務があるため、これはより良いソリューションです。
2014年

1
いいオプションですが、このコメントは完全に間違っています。最初のライブラリからのライセンスのみが含まれ、残りはすべて除外されます。
IgorČordaš2015

1
これは、2つのライブラリが同じ.soファイルを使用している場合に役立ちます
Fabian

同じ.classファイルを含む2つのJARにそれを使用できますか?2つのJARが含まれていて、どちらにもorg / xmlpull / v1 / XmlPullParser.classが含まれています
WillC

2
@PSIXO、あなたはすべてのライセンス含めたい場合は、以下の回答を確認できますstackoverflow.com/a/47828425/2371425を
Sakiboy

12

ライブラリhttclient-4.3.5をAndroid Studio 0.8.6にエクスポートするときの同じ問題は、これを含める必要があります。

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

ライブラリのzipコンテンツは次のjarファイルです。

commons-codec-1.6.jar
commons-logging-1.1.3.jar
fluent-hc-4.3.5.jar
httpclient-4.3.5.jar
httpclient-cache-4.3.5.jar
httpcore-4.3.2.jar
httpmime-4.3.5.jar

8

このバグは0.8 + / 1.10にも存在します

ジャクソンと

compile 'com.fasterxml.jackson.dataformat:jackson-dataformat-csv:2.2.2'

それがコンパイルされる前に、私は上記の提案と同様に含める必要がありました

exclude 'META-INF/services/com.fasterxml.jackson.core.JsonFactory'

「META-INF / services / com.fasterxml.jackson.core.JsonFactory」を除外する方法。どのファイルを編集する必要がありますか?
UmAnusorn 2014

6

複数のエラーです

apply plugin: 'android-library'

これを追加 ::

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

ファイルが重複している場合は簡単です。ディレクトリのJAR下を調べMETA-INFて、エラーの原因を確認してください。複数になる可能性があります。私の場合、Couchbase Liteプラグイン。プラグインを追加すると、より多くの例外が必要になります


愚かな質問:そのJARファイルはどこにありますか?
WillC、2017

Android Studioで、--info フラグを指定してGradleを実行すると、apkに追加されているクラスのログが表示されます。次に、上方向に検索して、異なるJARから追加されている同じクラスのログエントリを見つけることができます。これにより、両方のJARファイルへのファイルパスもわかりました。1つの.classファイルを他のファイルよりも適切に選択する方法が見つからなかったため、JARファイルの1つを変更し、重複する.classを削除しました
WillC

4

Android Studio 1.0.1で「org.springframework.android:spring-android-rest-template:2.0.0.M1」を使用したときと同じ問題。これを含める必要がありますbuild.gradle

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



2

問題は、META-INFフォルダーがフィルターされないため、NOTICEまたはLICENSE掛けられ、ビルド時に重複が発生し、それらを一緒にコピーしようとすることです。

ダーティクイックフィックス:

フォルダー内の.jarファイルを.gradle/caches/...(zip互換ツールを使用して)META-INF開き、エラーの原因となったフォルダー内のファイルを削除するか名前を変更します(通常はNOTICEまたはLICENSE)。 (私はそれもOPで知っていますが、私にとっては、Googleフォーラムを読むまで明確ではありませんでした)

編集:

これは0.7.1で修正されました。除外する競合ファイルを追加するだけです。

android {
    packagingOptions {
        exclude 'META-INF/LICENSE'
    }
}

申し訳ありませんが、私は今それを理解しています。
UmAnusorn 2014

おそらく最悪の答え:Gradleキャッシュ内のjarを変更するとチェックサムが変更される可能性があり、その結果、長い間機能しない...加えて、それらはjarではありません
Riduidel

ええ、だからこそ「ダーティクイックフィックス」が太字で表示されています。また、正しい解決策はパラグラフだけです。あなたはそれが明確な解決策がなかったときに書かれたが、人々はまだ彼らのアプリをコンパイルする必要があったことを知っています。
Patrick Favre 2017年

2

ここと同じ

dependencies {
    compile 'org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:1.0.0'
}

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

私はその奇妙なエラーのために2日ほど失った...なぜこれはまだgradle 1.0.0でも起こっているのですか?それは初心者にとって非常に不安です...とにかく、その情報をありがとう、私はそれが私のコードにあると思った:)


2

このエラーがどのファイルで発生するかを知ることは重要です(たとえば、META-INF / LICENSE.txtです)。私の場合は、META-INF / LICENSE [".txt"なし]で、ファイルMETA-INF / ASL2.0なので、build.gradleに次の行を追加しました。

android {
    packagingOptions {
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/ASL2.0'
    }
}

非常に重要(!)->エラーメッセージに表示される同じスタイルでファイルの名前を追加します。テキストでは大文字と小文字が区別され、*。txtと*( "txt"なし)の間に違いがあります。


2

オープンソースライブラリを利用して開発者としての役割を果たしたい場合は、それらすべてのオープンソースライセンスをに含めてみてくださいapk。これを行うには、でmergeメソッドを使用できますpackagingOptions

例:

packagingOptions {
        // This will get include every license and notice regardless of what dir it’s in.
        merge '**/LICENSE.txt'
        merge '**/NOTICE.txt'
        merge '**/notice.txt'
        merge '**/license.txt'
        merge '**/NOTICE'
        merge '**/LICENSE'
        merge '**/notice'
        merge '**/license'
        merge '**/LGPL2.1'
        // This will exclude any README files, regardless of the dir or the file type.
        exclude '**/README.*'
}

このpickFirst方法は、使用するよりも優れています。この方法は、最初に見つかったライセンスのみが選択され、残りはすべて無視されるため、この場合は役に立たなくなるからです。

つまり、簡単に言うと、このmergeメソッドを使用して、これまで使用してきたキックオープンソースライブラリのすべてのライセンスを含めます。

Gradle PackagingOptionsの詳細。


2

AOSPでこのコミットコメントに気づきました。解決策は、DSLを使用して一部のファイルを除外することです。おそらく0.7.1がリリースされたときでしょう。

commit e7669b24c1f23ba457fdee614ef7161b33feee69
Author: Xavier Ducrohet <--->
Date:   Thu Dec 19 10:21:04 2013 -0800

    Add DSL to exclude some files from packaging.

    This only applies to files coming from jar dependencies.
    The DSL is:

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

そう、彼らはビルドサイトでリリースノートを書いたばかりなので、うまくいけばアーティファクトをMaven Centralにアップロードして、これを使用できるようになるでしょう!
Matt Wolfe

1

私の場合、プロジェクトのbuild.gradleファイルに追加するだけです:

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

   ...
}

0

Android Studio 1.1.0では、小文字の名前が必要でした。

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

0

ファイル「LICENSE.txt」と「NOTICE.txt」では大文字と小文字が区別されます。SPring androidライブラリの場合、追加する必要がありました

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

0

LICENSEがエラーを削除した後に.txtを削除すると:

packagingOptions {
    exclude 'META-INF/LICENSE'
}

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