Utilisation du plugin Android Gradle 0.7.0 avec les éléments suivants 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
]
}
}
donne l'erreur 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
Les choses fonctionnaient bien ce matin avant de mettre à jour Android Studio. Des idées?
EDIT: j'ai pu le corriger temporairement en exécutant des commandes comme
zip -d spring-android-core-1.0.1.RELEASE.jar META-INF/notice.txt
jusqu'à ce que toutes les erreurs en double aient disparu.
android
gradle
android-studio
android-gradle-plugin
David Lawson
la source
la source
pickFirst
option disponible depuis Gradle 0.9.1 .Réponses:
À partir de la version 0.8.14 d'Android Studio
Vous devez ajouter:
à ton
build.gradle
dossier.L'histoire:
Selon le commentaire 14 de ce bug: https://issuetracker.google.com/issues/36982149#comment14 il s'agit d'un bogue dans la version 0.7.0 du plug-in Android Gradle, et devrait être corrigé bientôt dans la version 0.7.1.
Voici les notes de ce bug sur l'ajout de 0.7.1:
0.7.1 est sorti avec le correctif pour cela.
La DSL pour exclure des fichiers est:
Vous pouvez ajouter autant d'instructions d'exclusion que vous le souhaitez. La valeur est le chemin d'archivage. Pas encore de support générique ou global.
Les noms de fichiers "LICENSE.txt" et "NOTICE.txt" sont sensibles à la casse. Veuillez également essayer avec "license.txt" et "notice.txt".
la source
Dans mon cas, j'ai dû inclure plusieurs exclusions supplémentaires. Il semble qu'il n'aime pas les expressions régulières, ce qui en aurait fait une belle doublure.
la source
LICENSE
etNOTICE
après avoir ajoutécommons-lang3
.la source
.txt
suffixe..txt
suffixe. Donc je suppose que YMMV (ou MMMV selon la période de l'année).Jetez un œil au commentaire de Sakiboy !
Réponse obsolète
À partir de Gradle 0.9.1, les éléments suivants sont pris en charge:
Plus d'informations dans les notes de version de Gradle .
la source
Le même problème lorsque j'exporte la bibliothèque httclient-4.3.5 dans Android Studio 0.8.6 j'ai besoin d'inclure ceci:
Le fichier zip de la bibliothèque contient le pot suivant:
la source
Ce bug existe toujours en 0.8 + / 1.10
Avec Jackson
J'ai dû inclure ainsi que la suggestion ci-dessus avant de compiler
la source
C'est plus d'une erreur
Sous
apply plugin: 'android-library'
Ajoute ça ::
En cas de fichiers en double, c'est facile, regardez à l'intérieur du
JAR
sous leMETA-INF
répertoire et voyez ce qui cause l'erreur. Cela pourrait être multiple. Dans mon cas, le plugin Couchbase Lite. Lorsque vous ajoutez plus de plugins, vous aurez besoin de plus d'exceptionsla source
--info
drapeau m'a permis de voir le journal des classes ajoutées à l'apk, et je pouvais ensuite rechercher vers le haut pour trouver l'entrée de journal pour la même classe ajoutée à partir d'un autre JAR. Cela m'a également montré le chemin d'accès aux deux fichiers JAR. Je ne pouvais pas trouver un bon moyen de choisir un fichier .class par rapport à l'autre, j'ai donc modifié l'un des fichiers JAR et supprimé le fichier .class en doubleLe même problème lorsque j'ai utilisé 'org.springframework.android:spring-android-rest-template:2.0.0.M1' dans Android Studio 1.0.1. J'ai besoin de l'inclure dans
build.gradle
la source
Cela fonctionne pour moi:
la source
Je pense que vous devez inclure uniquement ces options dans build.gradle :
ps même réponse de mon message dans: Erreur :: fichiers en double lors de l'empaquetage de l'APK
la source
Le problème est que le dossier META-INF ne sera pas filtré, donc plusieurs entrées de
NOTICE
ouLICENSE
provoquer des doublons lors de la construction et il est tenté de les copier ensemble.Correction rapide sale:
Ouvrez le
.jar
fichier dans votre.gradle/caches/...
dossier (avec un outil compatible zip) et supprimez ou renommez les fichiers dans leMETA-INF
dossier qui provoquent l'erreur (généralementNOTICE
ouLICENSE
). (Je sais que c'est aussi dans l'OP, mais pour moi, ce n'était pas vraiment clair avant d'avoir lu le forum google)ÉDITER:
Cela a été corrigé dans 0.7.1. Ajoutez simplement les fichiers de configuration à exclure.
la source
Même chose ici avec
J'ai perdu environ 2 jours pour cette erreur bizarre ... Pourquoi cela se produit-il toujours dans le niveau 1.0.0? C'est très inquiétant pour les débutants ... Quoi qu'il en soit, merci pour ces informations, je pensais que c'était sur mon code :)
la source
Important de savoir dans quel fichier il s'agit de cette erreur (dans votre exemple c'est META-INF / LICENSE.txt), dans mon cas c'était dans META-INF / LICENSE [sans ".txt"], puis dans le fichier META-INF / ASL2.0, j'ai donc ajouté à mon build.gradle ces lignes:
Très important (!) -> ajoutez le nom du fichier dans le même style, que vous le voyez dans le message d'erreur: le texte est sensible à la casse, et il y a une différence entre * .txt et * (sans "txt") .
la source
Si vous voulez faire votre part en tant que développeur, en utilisant des bibliothèques open source, vous devriez essayer d'inclure toutes ces licences open source dans votre
apk
. Pour ce faire, vous pouvez utiliser la méthode de fusion dans votrepackagingOptions
.Exemple:
Cette réponse est mieux que d' utiliser
pickFirst
parce que cette méthode ne sélectionne que la première licence qu'elle trouve et ignore tous les autres, la rendant un peu inutile dans ce cas.Donc, en bref, utilisez le
merge
méthode pour inclure toutes ces licences à partir des bibliothèques open source kickass que vous avez utilisées.Plus d'informations sur
Gradle
PackagingOptions .la source
J'ai remarqué ce commentaire de commit dans AOSP, la solution sera d'exclure certains fichiers en utilisant DSL. Probablement lorsque 0.7.1 est publié.
la source
Dans mon cas, je n'ai qu'à ajouter au fichier build.gradle du projet:
la source
Dans Android Studio 1.1.0, j'avais besoin de noms en minuscules:
la source
Les fichiers "LICENSE.txt" et "NOTICE.txt" sont sensibles à la casse. Donc, pour la bibliothèque Android SPring, j'ai dû ajouter
la source
Supprimer .txt après que LICENSE a supprimé mon erreur:
la source
la source