Android Studio 0.4 Дублирующие файлы, скопированные в APK META-INF/LICENSE.txt

После того, как я обновил свою Studio от 0,37 до 0,4, я не могу скомпилировать свой проект. Я нашел решение в 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

P.S. Разработка в ubuntu 13.04

Ответ 1

Помещение зависимостей вверху и packageOptions в конце сработало для меня.

apply plugin: 'android'. 

Вот мой полный файл 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'
    }
}

EDIT: почти вся лицензия ОС включает обязательство "включить копию лицензии" в ваш проект. Таким образом, это означает, что вы должны включить копию всех лицензий ОС, которые вы используете в своих проектах. "Исключая" их в gradle, вы нарушаете лицензии.

Исключение из проекта может оказаться не лучшим вариантом. Спасибо Р.С. для информации.

Ответ 2

Внимание!! Возможное нарушение лицензии OpenSource.

При исключении файлов license.txt, как было предложено выше, вы можете нарушить некоторые лицензии с открытым исходным кодом, поскольку в лицензиях с открытым исходным кодом общая точка доступа соглашается добавить его в ваш источник. Лучше проверьте свои лицензии с открытым исходным кодом.

Update: Пока не будет лучшего решения, используйте

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

как это, вы хотя бы выполняете часть лицензионного обязательства

Ответ 3

просто добавьте

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

в build.gradle

Ответ 4

Вы можете исправить это, добавив следующий код в 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'
    }
}

Ответ 5

Я столкнулся с той же проблемой, что и в новой версии gradle, ниже build.gradle для меня работает текстовый формат:

В моей папке libs есть два барабана Jackson.

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

Ответ 6

Добавление:

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

работал у меня, решение biniam_Ethiopia, вероятно, является наиболее отказоустойчивым

Ответ 7

При вставке этого кода

android{

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

УБЕДИТЕСЬ, если в ошибке отображается

> Дублирующие файлы, скопированные в APK META-INF/ LICENSE.txt

затем добавьте

 android{

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

}

если в ошибке отображается

> Дублирующие файлы, скопированные в APK META-INF/ ЛИЦЕНЗИЯ

затем добавьте

 android{

packagingOptions{
    exclude 'META-INF/LICENSE'
 }

}

если в ошибке отображается

> Дублирующие файлы, скопированные в APK META-INF/ license.txt

затем добавьте

 android{

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

}

Вкратце текст CASE и документ FORMAT (.txt) настолько важны.

(эта ошибка существует и в Android Studio 1.1.0)

Ответ 8

Это поможет вам решить проблему.

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

Ответ 9

Я просто добавляю 2:

android{

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

}

Ответ 10

У меня была аналогичная ошибка и она была решена без функции packingOptions() и exclude. Я добавлял две зависимости, но одна из них была подгруппой первой. Это вызвало ошибку, как только я удалил один из них, я получил чистую сборку. Я рекомендую проверить аналогичную ошибку в вашем блоке зависимостей.

Ответ 11

При использовании java-jwt и jackson-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")

Ответ 12

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 и проект syn

Ответ 13

Это может быть плохой практикой, однако если вы включаете несколько больших библиотек, вы можете столкнуться сотнями таких конфликтов.

Ниже перечислены супер-простые исправления для таких случаев:

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