Android Studio. Estou recebendo esse tipo de erro durante a execução do aplicativo.
Error:Execution failed for task ':app:packageDebug'. Duplicate files copied in APK META-INF/notice.txt
build.gradle
apply plugin: 'android'
android {
compileSdkVersion 19
buildToolsVersion "19.0.1"
packagingOptions {
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/ASL2.0'
}
defaultConfig {
minSdkVersion 7
targetSdkVersion 19
versionCode 1
versionName "1.0"
}
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
}
dependencies {
compile 'com.android.support:appcompat-v7:19.0.1'
compile 'com.j256.ormlite:ormlite-android:4.48'
compile 'org.codehaus.jackson:jackson-core-asl:1.9.13'
compile 'org.codehaus.jackson:jackson-mapper-asl:1.9.13'
compile 'com.octo.android.robospice:robospice:1.4.11'
compile 'com.octo.android.robospice:robospice-spring-android:1.4.11'
}
Como posso corrigir este erro?
EDITADO
Estas opções de exclusão resolveram meu problema:
packagingOptions {
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/license.txt'
exclude 'META-INF/NOTICE'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/notice.txt'
exclude 'META-INF/ASL2.0'
}
android
android-gradle-plugin
Robertas Setkus
fonte
fonte
Respostas:
Eu acho que a comparação de strings diferencia maiúsculas de minúsculas. tente com
exclude 'META-INF/notice.txt'
fonte
notice.txt
vez deNOTICE.txt
? Embora o erro pareça realmente diferente daquele em que a exclusão ocorre. Você tem umMETA-INF/notice.txt
arquivo no seusrc/main/resources/
?exclude 'META-INF/notice.txt'
mas o console solicitou issoDuplicate files copied in APK META-INF/NOTICE.txt
. Estranho, não é? Não háresources
diretório emC:\PathToAndroidStudioProject\src\main
.exclude 'META-INF/notice.txt'
eexclude 'META-INF/NOTICE.TXT'
, funciona?packagingOptions { exclude 'META-INF/ASL2.0' exclude 'META-INF/LICENSE' }
Eu acho que você precisa incluir apenas essas opções no build.gradle :
fonte
Resposta curta:
Veja a saída detalhada do gradle usando
gradle assemble
e observe os arquivos duplicados e exclua-os usando:Resposta longa:
Execute a
assemble
tarefa gradle na linha de comandos para obter resultados detalhados:./gradlew assemble || gradle assemble
Isso mostra automaticamente o que excluir:
Veja esta parte na saída:
Ele até mostra a lista de dependências que originaram arquivos duplicados (LICENSE). Veja as linhas com o número de origem na saída.
fonte
Adicione isso ao seu arquivo build.gradle ...
como isso...
fonte
É mais do que um erro, você está certo.
Debaixo
apply plugin: 'android-library'
Adicione isso ::
android { packagingOptions { exclude 'META-INF/ASL2.0' exclude 'META-INF/LICENSE' exclude 'META-INF/NOTICE' } }
O 1º erro ocorre por duplicatas de arquivo, o 2º ocorre por arquivos LICENSE e AVISO. Vai funcionar depois
EDIT :: Veja meu post aqui sobre como identificar os problemas :: Android Gradle plugin 0.7.0: "arquivos duplicados durante o empacotamento do APK"
fonte
isso funciona para mim
fonte
Curiosamente, quando excluí esta linha da gradle, ela funcionou:
fonte
Eu tive que brincar um pouco para encontrar o local certo para as opções de embalagem. Resolvendo o problema de arquivo duplicado para um conflito entre jackson-core: 2.2.2 e jackson-databind: 2.2.2 Além disso, o DSL parece ter mudado recentemente. Portanto, no recente Android Studio 1.4.1 com buildTools 23, é necessário colocar o Android. opções de empacotamento no mesmo nível que compileOptions E NÃO dentro de qualquer modelo {android { chaves!
fonte