Usando o plugin Android Gradle 0.7.0 com o seguinte 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
]
}
}
dá o erro 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
As coisas estavam funcionando bem esta manhã antes de eu atualizar o Android Studio. Alguma ideia?
EDIT: Consegui corrigi-lo temporariamente executando comandos como
zip -d spring-android-core-1.0.1.RELEASE.jar META-INF/notice.txt
até que todos os erros duplicados desaparecessem.
android
gradle
android-studio
android-gradle-plugin
David Lawson
fonte
fonte
pickFirst
opção disponível desde o Gradle 0.9.1 .Respostas:
A partir do Android Studio versão 0.8.14
Você deve adicionar:
para o seu
build.gradle
arquivo.História:
De acordo com o comentário 14 deste bug: https://issuetracker.google.com/issues/36982149#comment14 este é um bug na v0.7.0 do plug-in Android Gradle e deve ser corrigido em breve na versão 0.7.1.
Aqui estão as notas desse bug sobre a adição para 0.7.1:
0.7.1 está com a correção para isso.
O DSL para excluir arquivos é:
Você pode adicionar quantas instruções de exclusão desejar. O valor é o caminho do arquivo morto. Ainda não há suporte a curinga ou glob.
Os nomes de arquivos "LICENSE.txt" e "NOTICE.txt" diferenciam maiúsculas de minúsculas. Por favor, tente com "license.txt" e "notice.txt" também.
fonte
No meu caso, tive que incluir várias exclusões adicionais. Parece que não gosta de expressões regulares, o que tornaria isso um ótimo recurso.
fonte
LICENSE
eNOTICE
depois adicioneicommons-lang3
.fonte
.txt
sufixo..txt
sufixo. Então eu acho que YMMV (ou MMMV, dependendo da época do ano).Dê uma olhada no comentário de Sakiboy !
Resposta desatualizada
No Gradle 0.9.1, o seguinte é suportado:
Mais informações nas notas de versão Gradle .
fonte
O mesmo problema ao exportar a biblioteca httclient-4.3.5 no Android Studio 0.8.6, preciso incluir o seguinte:
A biblioteca zip o conteúdo do próximo jar:
fonte
Este bug ainda existe em 0.8 + / 1.10
Com Jackson
Eu tive que incluir, além da sugestão acima, antes de compilar
fonte
É mais do que um erro
Debaixo
apply plugin: 'android-library'
Adicione isso ::
No caso de arquivos duplicados, é fácil, procure dentro
JAR
doMETA-INF
diretório e veja o que está causando o erro. Pode ser múltiplo. No meu caso, o plugin Couchbase Lite. Conforme você adiciona mais plugins, você precisará de mais exceçõesfonte
--info
sinalizador, deixe-me ver o log de classes sendo adicionado ao apk e, em seguida, eu poderia pesquisar para cima para encontrar a entrada de log da mesma classe que foi adicionada a partir de um JAR diferente. Isso também me mostrou o caminho do arquivo para os dois arquivos JAR. Eu não poderia encontrar uma boa maneira de escolher um .class arquivo sobre o outro, então eu modificado um dos arquivos JAR e removeu o .class duplicadoO mesmo problema quando usei 'org.springframework.android:spring-android-rest-template:2.0.0.M1' no Android Studio 1.0.1. Eu preciso incluir isso em
build.gradle
fonte
Isso funciona para mim:
fonte
Eu acho que você precisa incluir apenas essas opções no build.gradle :
ps mesma resposta do meu post em: Erro :: arquivos duplicados durante o empacotamento do APK
fonte
O problema é que a pasta META-INF não será filtrada, de modo que várias entradas
NOTICE
ouLICENSE
causem duplicatas ao criar e tente copiá-las juntas.Correção rápida suja:
Abra o
.jar
arquivo na sua.gradle/caches/...
pasta (com uma ferramenta compatível com zip) e remova ou renomeie os arquivos naMETA-INF
pasta que causam o erro (normalmenteNOTICE
ouLICENSE
). (Eu sei que isso também está no OP, mas para mim não ficou muito claro até eu ler o fórum do google)EDITAR:
Isso foi corrigido no 0.7.1. Basta adicionar os arquivos confidenciais para excluir.
fonte
O mesmo aqui com
Perdi dois dias por esse erro estranho ... Por que isso ainda está acontecendo no gradle 1.0.0? Isso é muito perturbador para iniciantes ... Enfim, obrigado por essa informação que eu pensei que estava no meu código :)
fonte
É importante saber em que arquivo se trata esse erro (no exemplo, é META-INF / LICENSE.txt), no meu caso, estava em META-INF / LICENSE [sem ".txt"] e depois no arquivo META-INF / ASL2.0, então eu adicionei ao meu build.gradle estas linhas:
Muito importante (!) -> adicione o nome do arquivo no mesmo estilo, para vê-lo na mensagem de erro: o texto diferencia maiúsculas de minúsculas e há uma diferença entre * .txt e * (sem "txt") .
fonte
Se você deseja fazer sua parte como desenvolvedor, utilizando bibliotecas de código aberto, tente incluir todas essas licenças de código aberto na sua
apk
. Para fazer isso, você pode usar o método de mesclagem no seupackagingOptions
.Exemplo:
Essa resposta é melhor do que usar,
pickFirst
porque esse método escolhe apenas a primeira licença que encontra e desconsidera todo o resto, tornando-a inútil nesse caso.Portanto, em resumo, use o
merge
método para incluir todas as licenças dessas bibliotecas de código-fonte aberto que você está usando.Mais informações sobre
Gradle
PackagingOptions .fonte
Notei este comentário de confirmação no AOSP, a solução será excluir alguns arquivos usando DSL. Provavelmente quando 0.7.1 for lançado.
fonte
No meu caso, só preciso adicionar ao arquivo build.gradle do projeto:
fonte
No Android Studio 1.1.0, eu precisava de nomes em minúsculas:
fonte
Os arquivos "LICENSE.txt" e "NOTICE.txt" diferenciam maiúsculas de minúsculas. Então, para a biblioteca android do SPring, eu tive que adicionar
fonte
A remoção de .txt após LICENSE removeu meu erro:
fonte
fonte