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
这似乎是bug code.google.com/p/android/issues/detail?id=61573。我不知道为什么在此版本中它才开始对您造成麻烦。
斯科特·巴塔

陷入同样的​​问题。决定留在Android 0.3.7工作室的gradle和插件0.6.3,直到错误解决
mente

6
您应该清除措辞:您未使用gradle 0.7.0-它是android gradle插件。在1.9.0版中使用gradle(带有包装器)。错误的措辞将导致混乱-除了给定的上下文。
onigunn

1
请注意pickFirstGradle 0.9.1开始可用的选项。
JJD 2014年

Answers:


475

从Android Studio版本0.8.14开始

您应该添加:

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

到您的build.gradle文件。

历史:

根据此bug的注释14:https : //issuetracker.google.com/issues/36982149#comment14,这是Android Gradle插件v0.7.0中的一个bug,即将在0.7.1中修复。

以下是该错误中有关添加0.7.1的注释:

0.7.1已解决此问题。

排除文件的DSL是:

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

您可以根据需要添加任意多个exclude语句。该值为存档路径。尚无通配符或glob支持。

文件名“ LICENSE.txt”和“ NOTICE.txt”区分大小写。请同时尝试“ license.txt”和“ notice.txt”。


12
谢谢!我还必须排除“ META-INF / NOTICE.txt”;)
爬升

71
日复一日,令我惊讶的是,在stackoverflow到达之前,程序员本来可以实现远程生产的。感谢您的修复!我不得不排除META-INF / LICENSE和/ NOTICE。(没有txt,即使是最新的gradle。)
domenukk 2014年

3
我应该编辑什么文件?在哪里可以找到?谢谢,Eyal。
eyal 2014年

2
@ um.anusorn Sean为您提供了一个gradle文件的好例子,该文件在打包期间从库中排除了这些文件。这就是我所拥有的:PackagingOptions {排除“ META-INF / LICENSE”排除“ META-INF / NOTICE”排除“ META-INF / DEPENDENCIES”排除“ META-INF / license.txt”排除“ META-INF / 'dependenices.txt'不包括'META-INF / notice.txt'}
praneetloke

4
仍然在内置工具的v0.12中普遍存在错误。.只是说
Nilzor 2014年

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 2014年

不知道哪个会影响,但这确实很有帮助。
CopperCash 2014年

不适用于我,仍然显示警告: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

看看Sakiboy的评论


过时的答案

从Gradle 0.9.1开始,支持以下内容:

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

Gradle发行说明中的更多信息。


3
这是一个更好的解决方案,因为开发人员有义务在使用开源软件时包括这些文件。
Louth,2014年

1
不错的选择,但此评论是完全错误的。仅包含来自firs库的许可证,其余的将被忽略。
IgorČordaš15年

1
如果2个库使用的是相同的.so文件,这将非常有用
Fabian

我可以将其用于包含相同.class文件的两个JAR吗?我有两个包含JAR的文件,每个都包含org / xmlpull / v1 / XmlPullParser.class
WillC

2
@PSIXO,如果您想包含所有许可证,则可以在下面看到答案:stackoverflow.com/a/47828425/2371425
Sakiboy

12

当我在Android Studio 0.8.6中导出库httclient-4.3.5时,同样的问题需要包含:

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

在Android Studio中,运行带有--info 标志的Gradle,可以查看添加到apk的类的日志,然后可以向上搜索以查找从不同JAR添加的同一类的日志条目。这也向我显示了两个JAR文件的文件路径。我找不到一个好的方法来选择一个.class文件,因此我修改了一个JAR文件并删除了重复的.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在构建时导致重复,因此尝试将它们一起复制。

肮脏的快速修复:

(使用zip兼容工具)打开.jar文件.gradle/caches/...夹中的文件,然后删除或重命名META-INF导致错误的文件夹中的文件(通常为NOTICELICENSE)。 (我知道在OP中也是如此,但是对我而言,直到我阅读Google论坛之前,我才真正知道这一点)

编辑:

该问题已在0.7.1中修复。只需添加要排除的冲突文件。

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

哦,对不起,我现在才明白。
UmAnusorn 2014年

也许是最糟糕的答案:更改gradle缓存中的jar可能会更改其校验和,结果很长一段时间都无法工作...此外,那些不是您的jar
Riduidel

是的,这就是为什么它用粗体字母显示“ Dirty Quick Fix”。正确的解决方案也只有一小段距离。您确实意识到这是在没有干净解决方案的时候编写的,但是人们仍然需要编译其应用程序。
Patrick Favre

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方法来包含您一直在使用的那些kickass开源库中的所有许可证。

有关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,以便我们可以使用它!
马特·沃尔夫

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'
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.