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 "**"
}
}