Menggunakan plugin Android Gradle 0.7.0 dengan yang berikut 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
]
}
}
memberikan kesalahan 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
Segalanya bekerja dengan baik pagi ini sebelum saya memperbarui Android Studio. Ada ide?
EDIT: Saya bisa memperbaikinya untuk sementara waktu dengan menjalankan perintah like
zip -d spring-android-core-1.0.1.RELEASE.jar META-INF/notice.txt
sampai semua kesalahan duplikat hilang.
android
gradle
android-studio
android-gradle-plugin
David Lawson
sumber
sumber
pickFirst
opsi yang tersedia sejak Gradle 0.9.1 .Jawaban:
Pada Android Studio versi 0.8.14
Anda harus menambahkan:
ke
build.gradle
file Anda .Sejarah:
Menurut komentar 14 dalam bug ini: https://issuetracker.google.com/issues/36982149#comment14 ini adalah bug di v0.7.0 dari plugin Android Gradle, dan akan segera diperbaiki di 0.7.1.
Berikut adalah catatan dari bug tentang penambahan untuk 0.7.1:
0.7.1 keluar dengan perbaikan untuk ini.
DSL untuk mengecualikan file adalah:
Anda dapat menambahkan pernyataan kecualikan sebanyak yang Anda inginkan. Nilai adalah jalur arsip. Belum ada wildcard atau dukungan glob.
Nama file "LICENSE.txt" dan "NOTICE.txt" peka huruf besar-kecil. Silakan coba dengan "license.txt" dan "notice.txt" juga.
sumber
Dalam kasus saya, saya harus memasukkan beberapa pengecualian tambahan. Tampaknya tidak menyukai ekspresi Reguler yang akan menjadikan ini garis satu bagus.
sumber
LICENSE
danNOTICE
setelah saya menambahkancommons-lang3
.sumber
.txt
sufiks..txt
sufiks. Jadi saya kira YMMV (atau MMMV tergantung pada waktu tahun).Silahkan lihat pada komentar Sakiboy ini !
Jawaban yang ketinggalan jaman
Dari Gradle 0.9.1 berikut ini didukung:
Informasi lebih lanjut dalam catatan rilis Gradle .
sumber
Masalah yang sama ketika saya mengekspor perpustakaan httclient-4.3.5 di Android Studio 0.8.6 Saya perlu menyertakan ini:
Pustaka zip membuat isi jar berikutnya:
sumber
Bug ini masih ada di 0,8 + / 1,10
Dengan Jackson
Saya harus memasukkan serta saran di atas sebelum akan dikompilasi
sumber
Ini lebih dari satu kesalahan
Dibawah
apply plugin: 'android-library'
Tambahkan ini ::
Dalam hal duplikat file itu mudah, lihat di
JAR
dalamMETA-INF
direktori dan lihat apa yang menyebabkan kesalahan. Bisa jadi banyak. Dalam kasus saya, plugin Couchbase Lite. Saat Anda menambahkan lebih banyak plugin, Anda akan membutuhkan lebih banyak pengecualiansumber
--info
bendera, biarkan saya melihat log kelas yang ditambahkan ke apk, dan saya kemudian bisa mencari ke atas untuk menemukan entri log untuk kelas yang sama ditambahkan dari JAR yang berbeda. Ini juga menunjukkan saya path file ke kedua file JAR. Saya tidak dapat menemukan cara yang baik untuk memilih satu file .class di atas yang lain, jadi saya memodifikasi salah satu file JAR dan menghapus duplikat .classMasalah yang sama ketika saya menggunakan 'org.springframework.android:spring-android-rest-template:.0.0.M1' di Android Studio 1.0.1. Saya perlu memasukkan ini ke dalam
build.gradle
sumber
Ini bekerja untuk saya:
sumber
Saya pikir Anda harus menyertakan hanya opsi ini di build.gradle :
ps jawaban yang sama dari posting saya di: Kesalahan :: file duplikat selama pengemasan APK
sumber
Masalahnya adalah bahwa folder META-INF tidak akan disaring sehingga banyak entri
NOTICE
atauLICENSE
menyebabkan duplikat saat membangun dan dicoba untuk menyalinnya bersama.Perbaikan Cepat Kotor:
Buka
.jar
file di.gradle/caches/...
folder Anda (dengan alat yang kompatibel dengan zip) dan hapus atau ganti nama file diMETA-INF
folder yang menyebabkan kesalahan (biasanyaNOTICE
atauLICENSE
). (Saya tahu itu juga di OP, tetapi bagi saya itu tidak benar-benar jelas sampai saya membaca forum google)EDIT:
Ini diperbaiki di 0.7.1. Cukup tambahkan file confilcting untuk dikecualikan.
sumber
Sama di sini dengan
Saya kehilangan 2 hari untuk kesalahan aneh itu ... Mengapa ini masih terjadi di kelas 1.0.0? Itu sangat mengganggu bagi pemula ... Pokoknya, terima kasih untuk info yang saya pikir itu pada kode saya :)
sumber
Penting untuk mengetahui file apa yang menyebabkan kesalahan ini (dalam contoh Anda itu adalah META-INF / LICENSE.txt), dalam kasus saya ini ada di META-INF / LICENSE [tanpa ".txt"], lalu dalam file tersebut META-INF / ASL2.0 jadi saya menambahkan ke build.gradle baris saya ini:
Sangat penting (!) -> tambahkan nama file dengan gaya yang sama, yang Anda lihat dalam pesan kesalahan: teks peka huruf besar-kecil, dan ada perbedaan antara * .txt dan * (tanpa "txt") .
sumber
Jika Anda ingin melakukan bagian Anda sebagai pengembang, menggunakan pustaka sumber terbuka, Anda harus mencoba memasukkan semua lisensi sumber terbuka di dalam pustaka Anda
apk
. Untuk melakukan ini, Anda bisa menggunakan metode menggabungkan dipackagingOptions
.Contoh:
Jawaban ini lebih baik daripada menggunakan
pickFirst
karena metode itu hanya mengambil lisensi pertama yang ditemukannya dan mengabaikan semua yang lain, agak menjadikannya tidak berguna dalam kasus ini.Jadi singkatnya, gunakan
merge
metode ini untuk memasukkan semua lisensi dari pustaka sumber terbuka kickass yang telah Anda gunakan.Info lebih lanjut tentang Pilihan
Gradle
Pengemasan .sumber
Saya perhatikan komentar komit ini di AOSP, solusinya adalah mengecualikan beberapa file menggunakan DSL. Mungkin ketika 0.7.1 dirilis.
sumber
Dalam kasus saya, saya hanya perlu menambahkan file build.gradle proyek:
sumber
Di Android Studio 1.1.0 saya membutuhkan nama huruf kecil:
sumber
File "LICENSE.txt" dan "NOTICE.txt" peka huruf besar-kecil. Jadi untuk perpustakaan android SPring saya harus menambahkan
sumber
Menghapus .txt setelah LICENSE menghapus kesalahan saya:
sumber
sumber