Za pomocą wtyczki Android Gradle 0.7.0 z następującymi elementami 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
]
}
}
daje błąd 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
Dziś rano wszystko działało dobrze, zanim zaktualizowałem Android Studio. Jakieś pomysły?
EDYCJA: Byłem w stanie to tymczasowo naprawić, uruchamiając polecenia takie jak
zip -d spring-android-core-1.0.1.RELEASE.jar META-INF/notice.txt
aż wszystkie zduplikowane błędy znikną.
android
gradle
android-studio
android-gradle-plugin
David Lawson
źródło
źródło
pickFirst
opcję dostępną od wersji 0.9.1 .Odpowiedzi:
Od wersji Android Studio 0.8.14
Powinieneś dodać:
do twojego
build.gradle
pliku.Historia:
Zgodnie z komentarzem 14 w tym błędzie: https://issuetracker.google.com/issues/36982149#comment14 jest to błąd w wersji v0.7.0 wtyczki Android Gradle, który zostanie wkrótce naprawiony w wersji 0.7.1.
Oto uwagi tego błędu dotyczące dodania do wersji 0.7.1:
Wersja 0.7.1 jest już naprawiona.
DSL do wykluczenia plików to:
Możesz dodać dowolną liczbę instrukcji wykluczenia. Wartością jest ścieżka archiwum. Nie ma jeszcze obsługi symboli wieloznacznych ani globalnych.
W nazwach plików „LICENSE.txt” i „NOTICE.txt” rozróżniana jest wielkość liter. Wypróbuj również z „license.txt” i „notice.txt”.
źródło
W moim przypadku musiałem podać kilka dodatkowych wykluczeń. Wygląda na to, że nie lubi wyrażeń regularnych, które sprawiłyby, że byłby to przyjemny jednowarstwowy.
źródło
LICENSE
iNOTICE
po dodaniucommons-lang3
.źródło
.txt
przyrostka..txt
sufiksu. Więc myślę, że YMMV (lub MMMV w zależności od pory roku).Zapraszamy do obejrzenia komentarza Sakiboy za !
Nieaktualna odpowiedź
Od wersji 0.9.1 obsługiwane są:
Więcej informacji w uwagach do wydania Gradle .
źródło
Ten sam problem podczas eksportowania biblioteki httclient-4.3.5 w Android Studio 0.8.6, muszę to uwzględnić:
Biblioteka zip zawiera następny słoik:
źródło
Ten błąd nadal występuje w wersji 0,8 + / 1,10
Z Jacksonem
Musiałem dołączyć, jak również powyższą sugestię, zanim się skompiluje
źródło
To więcej niż jeden błąd
Pod
apply plugin: 'android-library'
Dodaj ::
W przypadku powtarzających się plików to proste, zajrzeć do wnętrza
JAR
podMETA-INF
dir i zobaczyć, co jest przyczyną błędu. Może być wiele. W moim przypadku wtyczka Couchbase Lite. W miarę dodawania kolejnych wtyczek będziesz potrzebować więcej wyjątkówźródło
--info
flagą pozwoliło mi zobaczyć dziennik klas dodawanych do apk, a następnie mogłem wyszukać w górę, aby znaleźć wpis dziennika dla tej samej klasy dodawanej z innego pliku JAR. To również pokazało mi ścieżkę do obu plików JAR. Nie mogłem znaleźć dobrego sposobu na wybranie jednego pliku .class nad drugim, więc zmodyfikowałem jeden z plików JAR i usunąłem zduplikowanyTen sam problem, gdy użyłem „org.springframework.android:spring-android-rest-template:2.0.0.M1” w Android Studio 1.0.1. Muszę to uwzględnić w
build.gradle
źródło
To działa dla mnie:
źródło
Myślę, że musisz dołączyć tylko te opcje do build.gradle :
ps sama odpowiedź z mojego posta w: Błąd :: duplikowanie plików podczas pakowania APK
źródło
Problem polega na tym, że folder META-INF nie zostanie przefiltrowany, więc wiele wpisów
NOTICE
lubLICENSE
powoduje duplikowanie podczas budowania i próbuje się je skopiować razem.Brudna szybka poprawka:
Otwórz
.jar
plik w.gradle/caches/...
folderze (za pomocą narzędzia zgodnego z formatem zip) i usuń lub zmień nazwę plików wMETA-INF
folderze, które powodują błąd (zwykleNOTICE
lubLICENSE
). (Wiem, że jest to również w PO, ale dla mnie nie było tak naprawdę jasne, dopóki nie przeczytałem forum Google)EDYTOWAĆ:
Zostało to naprawione w wersji 0.7.1. Po prostu dodaj pliki wykluczające.
źródło
To samo tutaj z
Straciłem około 2 dni za ten dziwny błąd ... Dlaczego tak się dzieje w wersji 1.0.0? To jest bardzo niepokojące dla początkujących ... W każdym razie dzięki za te informacje, które myślałem, że były na moim kodzie :)
źródło
Ważne jest, aby wiedzieć, w jakim pliku występuje ten błąd (w twoim przykładzie jest to META-INF / LICENSE.txt), w moim przypadku było to w META-INF / LICENSE [bez „.txt”], a następnie w pliku META-INF / ASL2.0, więc dodałem do mojego build.gradle te linie:
Bardzo ważne (!) -> dodaj nazwę pliku w tym samym stylu, aby był widoczny w komunikacie o błędzie: w tekście rozróżniana jest wielkość liter i istnieje różnica między * .txt i * (bez „txt”) .
źródło
Jeśli chcesz wykonywać swoją rolę jako programista, korzystając z bibliotek typu open source, powinieneś spróbować uwzględnić wszystkie te licencje typu open source w swoim systemie
apk
. Aby to zrobić, możesz użyć metody scalania w swoimpackagingOptions
.Przykład:
Ta odpowiedź jest lepsza niż używanie,
pickFirst
ponieważ tylko ta metoda wybiera pierwszą znalezioną licencję i ignoruje resztę, co w pewnym sensie czyni ją bezużyteczną.Krótko mówiąc, użyj
merge
metody, aby uwzględnić wszystkie te licencje z tych bibliotek typu open source, z których korzystałeś.Więcej informacji o
Gradle
PackagingOptions .źródło
Zauważyłem ten komentarz zatwierdzenia w AOSP, rozwiązaniem będzie wykluczenie niektórych plików przy użyciu DSL. Prawdopodobnie po wydaniu wersji 0.7.1.
źródło
W moim przypadku muszę tylko dodać do pliku build.gradle projektu:
źródło
W Android Studio 1.1.0 potrzebowałem małych liter:
źródło
W plikach „LICENSE.txt” i „NOTICE.txt” rozróżniana jest wielkość liter. Więc do SPring biblioteki Androida musiałem dodać
źródło
Usunięcie .txt po LICENCJI usunęło mój błąd:
źródło
źródło