Android Studio. Saya mendapatkan kesalahan semacam ini selama menjalankan aplikasi.
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'
}
Bagaimana saya bisa memperbaiki kesalahan ini?
Diedit
Opsi kecualikan ini menyelesaikan masalah saya:
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
sumber
sumber
Jawaban:
Saya pikir perbandingan string sensitif huruf. coba dengan
exclude 'META-INF/notice.txt'
sumber
notice.txt
bukanNOTICE.txt
? Padahal kesalahannya terlihat benar-benar berbeda dari kesalahan di mana pengecualian terjadi. Apakah Anda memilikiMETA-INF/notice.txt
file disrc/main/resources/
?exclude 'META-INF/notice.txt'
tetapi kemudian konsol meminta ituDuplicate files copied in APK META-INF/NOTICE.txt
. Aneh bukan? Tidak adaresources
direktori di bawahC:\PathToAndroidStudioProject\src\main
.exclude 'META-INF/notice.txt'
danexclude 'META-INF/NOTICE.TXT'
, apakah itu berhasil?packagingOptions { exclude 'META-INF/ASL2.0' exclude 'META-INF/LICENSE' }
Saya pikir Anda harus menyertakan hanya opsi ini di build.gradle :
sumber
Jawaban singkat:
Lihat output gradle terperinci menggunakan
gradle assemble
dan perhatikan file yang duplikat dan kecualikan mereka menggunakan:Jawaban panjang:
Jalankan
assemble
tugas gradle dari baris perintah untuk output terperinci:./gradlew assemble || gradle assemble
Ini secara otomatis menunjukkan apa yang harus dikecualikan:
Lihat bagian ini dalam output:
Itu bahkan menunjukkan daftar dependensi yang berasal file duplikat (LISENSI). Lihat baris dengan Origin # di output.
sumber
Tambahkan ini di file build.gradle Anda ...
seperti ini...
sumber
Ini lebih dari satu kesalahan, Anda benar.
Dibawah
apply plugin: 'android-library'
Tambahkan ini ::
android { packagingOptions { exclude 'META-INF/ASL2.0' exclude 'META-INF/LICENSE' exclude 'META-INF/NOTICE' } }
Kesalahan pertama adalah duplikat file, kesalahan kedua adalah LISENSI dan PEMBERITAHUAN file. Ini akan berhasil setelah itu
EDIT :: Lihat posting saya di sini tentang mengidentifikasi masalah :: Plugin Android Gradle 0.7.0: "duplikat file selama pengemasan APK"
sumber
ini bekerja untuk saya
sumber
Menariknya, ketika saya menghapus baris ini dari gradle, ternyata berhasil:
sumber
Saya harus bermain-main sedikit untuk menemukan lokasi yang tepat untuk Pilihan pengemasan. Memecahkan masalah file duplikat untuk konflik antara jackson-core: 2.2.2 dan jackson-databind: 2.2.2 Juga DSL tampaknya telah berubah baru-baru ini. Jadi di Android Studio 1.4.1 baru-baru ini dengan buildTools 23 Anda harus meletakkan android. opsi pengemasan pada tingkat yang sama dengan compileOptions DAN TIDAK di dalam model {android { braces!
sumber