Android Studio 0.4 APK META-INF / LICENSE.txt dosyasında kopyalanan yinelenen dosyalar


115

Studio'umu 0.3.7'den 0.4.0'a güncelledikten sonra, projemi derleyemiyorum. Stackoverflow'da bir çözüm buldum: Yinelenen dosyalar kopyalandı (Android Studio 0.4.0)

Projemi 0.7. + Olarak derecelendirmek için güncelledim, ancak sonraki dizeleri nereye koymam gerektiğini bilmiyorum:

android {

    packagingOptions {
       exclude 'META-INF/LICENSE.txt'
    }
}

Benim logcat: log

Execution failed for task ':Prog:packageDebug'.
> Duplicate files copied in APK META-INF/LICENSE.txt
    File 1: /home/scijoker/AndroidStudioProjects/ProgProject/Prog/libs/httpclient-4.1.1.jar
    File 2: /home/scijoker/AndroidStudioProjects/ProgProject/Prog/libs/httpclient-4.1.1.jar

Ubuntu 13.04'te PS Geliştirme


2
İç androidbölüm
Eugen Martynov

Teşekkürler. Block PackagingOptions () öğesini ana gradle conf dosyasına koydum. Önce bu bloğu kütüphanelerin gradle dosyalarına ekledim. Tüm işler mükemmel =)
a.black13

Yanıtlar:


155

Bağımlılıkları en üste ve packageOptions'ı en sonunda koymak benim için çalıştı.

apply plugin: 'android'. 

İşte uygulama klasöründeki tam build.gradle'ım.

dependencies {
    compile 'com.android.support:support-v4:+'
    compile files('libs/apache-mime4j-0.6.jar')
    compile files('libs/httpmime-4.0.jar')
}

android {
    compileSdkVersion 19
    buildToolsVersion "19.0.1"

    defaultConfig {
        minSdkVersion 7
        targetSdkVersion 10
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-    rules.txt'
    }


    packagingOptions {
        exclude 'META-INF/DEPENDENCIES.txt'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/notice.txt'
        exclude 'META-INF/license.txt'
        exclude 'META-INF/dependencies.txt'
        exclude 'META-INF/LGPL2.1'
    }
}

DÜZENLEME: Hemen hemen tüm işletim sistemi lisansları, projenize "lisansın bir kopyasını dahil etme" yükümlülüğünü içerir. Bu, kullandığınız tüm işletim sistemi lisanslarının bir kopyasını projelerinize dahil etmeniz gerektiği anlamına gelir. Bunları gradle'da "dışarıda bırakarak" lisansları ihlal etmiş olursunuz.

Bunları projeden dışlamak en iyi seçenek olmayabilir. Bilgi için teşekkür ederim RS.


2
@Andree Dosyaları hariç tutmamızın nedeni, .txt (ve diğer) dosyalarının derleme tarafından oluşturulacak .apk dosyasına dahil edilmesini istemiyor olmamızdır.
biniam

4
hariç tutma, android dışında tanınmıyor {}: /
An-droid

4
Hariç tutma, android {} içinde olmalıdır, bu durumda yalnızca çalışır.
Pavan Pyati

2
! Bu Çözüm tüm Açık kaynak lisanslarını ihlal ediyor! Her kitaplığın orijinal lisans metnini paketinize eklemek zorunda olduğunuz için
RS

2
Selam. Hiç. Hemen hemen tüm işletim sistemi lisansları, projenize "lisansın bir kopyasını dahil etme" yükümlülüğünü içerir. Bu, kullandığınız tüm işletim sistemi lisanslarının bir kopyasını projelerinize dahil etmeniz gerektiği anlamına gelir. Bunları gradle'da "dışlayarak" lisansları ihlal etmiş olursunuz.
RS

47

Dikkat!! Olası Açık Kaynak lisans ihlali.

Yukarıda önerildiği gibi license.txt dosyalarını hariç tutarak, açık kaynak lisanslarında kaynağınıza eklemeyi kabul etmek yaygın bir nokta olduğundan bazı açık kaynak lisanslarını ihlal edebilirsiniz. Açık kaynak lisanslarınızı daha iyi kontrol edin.

Güncelleme: Daha iyi bir çözüm bulunana kadar,

packagingOptions {
   pickFirst  'META-INF/license.txt'
}

bunun gibi en azından lisans yükümlülüğünün bir kısmını yerine getiriyorsun


23

sadece ekle

android {
    packagingOptions {
        exclude 'META-INF/LICENSE.txt'
    }
}

build.gradle'da


Açık kaynak lisansını şu şekilde ihlal ediyoruz
RS

16

Aşağıdaki kodu ekleyerek düzeltebilirsiniz project/app/build.gradle:

android {
    // Fixed build error : Duplicate files copied in APK META-INF/xxx
    packagingOptions {
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/LICENSE.txt'
    }
}

Selam. Bu sorun 1,5 yıl önce düzeltildi Cevabınız için teşekkürler
a.black13

:-) Bugün bu problemle karşılaştım ve bu konuyu buldum. Ve tarihi fark etmiyorum.
AlfredZhong

Tarihi fark etmediniz VE diğer tüm cevapları görmezden geldiniz.
inanılmaz Ocak

11

Gradle'ın yeni sürümüyle aynı sorunla karşılaşıyordum, Build.gradle metin formatı benim için çalışıyor:

Kitaplıklar klasörümde iki jackson kavanozu var.

android {
         compileSdkVersion 21
         buildToolsVersion "21.1.2"

         defaultConfig {
            applicationId "com.omtlab.myapplication"
            minSdkVersion 14
            targetSdkVersion 21
            versionCode 1
            versionName "1.0"
         }
         buildTypes {
             release {
                 minifyEnabled false
                 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
         }
         packagingOptions {
            exclude 'libs/jackson-core-asl-1.9.13.jar'
            exclude 'libs/jackson-mapper-asl-1.9.13.jar'
            exclude 'META-INF/ASL2.0'
            exclude 'META-INF/LICENSE'
            exclude 'META-INF/NOTICE'
         }
}

dependencies {
    //compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:appcompat-v7:21.0.3'
    compile files('libs/jackson-core-asl-1.9.13.jar')
    compile files('libs/jackson-mapper-asl-1.9.13.jar')
}

Teşekkür ederim! Bugün ~ 5 saat boyunca buna karşı kafamı vuruyordum. :) Bunu packagingOptions { exclude 'libs/jackson...' }düzeltti.
CJBrew

8

Ekleme:

packagingOptions {
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/NOTICE'
    exclude 'META-INF/NOTICE.txt'
}

benim için çalıştı, biniam_Ethiopia'nın çözümü muhtemelen en güvenli çözümdür


8

Bu kodu eklerken

android{

packagingOptions{
    exclude 'META-INF/notice.txt'
    exclude 'META-INF/license.txt'
 }
}

EMİN OLUN içinde eğer hata o gösteriyor

> APK META-INF / LICENSE.txt dosyasında kopyalanan yinelenen dosyalar

sonra Ekle

 android{

packagingOptions{
    exclude 'META-INF/LICENSE.txt'
 }

}

eğer hata halinde gösteriyorsa

> APK META-INF / LICENSE'de kopyalanan yinelenen dosyalar

sonra Ekle

 android{

packagingOptions{
    exclude 'META-INF/LICENSE'
 }

}

eğer hata halinde gösteriyorsa

> APK META-INF / license.txt'de kopyalanan yinelenen dosyalar

sonra Ekle

 android{

packagingOptions{
    exclude 'META-INF/license.txt'
 }

}

Kısa metinde CASE ve belge FORMAT (.txt) çok önemlidir.

(bu hata Android Studio 1.1.0'da da mevcuttur)


6

Bu, sorunu çözmenize yardımcı olacaktır

packagingOptions {
    exclude 'META-INF/ASL2.0'
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/NOTICE'
    exclude 'META-INF/LICENSE.txt'
    exclude 'META-INF/NOTICE.txt'
    exclude 'META-INF/DEPENDENCIES'
}

Temelde doğru cevapla aynıysa neden bu kadar çok olumsuz oy var?
Necronet

4
packagingOptions {
    exclude 'META-INF/DEPENDENCIES.txt'
    exclude 'META-INF/LICENSE.txt'
    exclude 'META-INF/NOTICE.txt'
    exclude 'META-INF/NOTICE'
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/DEPENDENCIES'
    exclude 'META-INF/notice.txt'
    exclude 'META-INF/license.txt'
    exclude 'META-INF/dependencies.txt'
    exclude 'META-INF/LGPL2.1'
}

Build.gradle dosyasına ekleyin ve projeyi senkronize edin


3

Sadece 2 ekliyorum:

android{

packagingOptions{
    exclude 'META-INF/LICENSE.txt'
    exclude 'META-INF/LICENSE'
 }

}

Bu yine de uygulama üretimine dahil edilecek mi?
RoCk RoCk

2

Benzer bir hatayla karşılaştım ve bunu packingOptions()ve excludeişlevi olmadan çözdüm . İki bağımlılık ekliyordum ama biri ilkinin bir alt grubuydu. Bu hataya neden oldu, bunlardan birini kaldırdıktan sonra temiz bir yapıya sahip oldum. Bağımlılık bloğunuzda benzer bir hatayı kontrol etmenizi öneririm.


Merhaba, bu sorunu uzun zaman önce packingOptions () ekleyerek çözdüm. Cevabınız için teşekkürler) +1
a.black13

Bu sorun, AS'nin yeni mevcut sürümünde düzeltildi
a.black13

2

Kullanırken java-jwtve jackson-corebirlikte aşağıdaki kullanın:

exclude("META-INF/maven/com.fasterxml.jackson.core/jackson-annotations/pom.properties")
exclude("META-INF/maven/com.fasterxml.jackson.core/jackson-annotations/pom.xml")
exclude("META-INF/maven/com.fasterxml.jackson.core/jackson-core/pom.properties")
exclude("META-INF/maven/com.fasterxml.jackson.core/jackson-core/pom.xml")
exclude("META-INF/maven/com.fasterxml.jackson.core/jackson-databind/pom.properties")
exclude("META-INF/maven/com.fasterxml.jackson.core/jackson-databind/pom.xml")

2

Bu kötü bir uygulama olabilir, ancak birden fazla büyük kütüphane dahil ediyorsanız, kendinizi bu tür yüzlerce çatışmanın üzerinde çalışırken bulabilirsiniz.

Aşağıda, bu tür durumlar için süper basit bir düzeltme listelenmiştir:

android { 
    ....
    packagingOptions {
        // Allow the compilation process to choose the dependencies for us.
        pickFirst "**"
    }
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.