Android Gradle eklentisi 0.7.0: “APK'nın paketlenmesi sırasında dosyaları çoğalt”


324

Android Gradle eklentisi 0.7.0'ı aşağıdakilerle kullanma 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
        ]
    }
}

hatayı verir 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

Android Studio'yu güncellemeden önce bu sabah işler iyi gidiyordu. Herhangi bir fikir?

DÜZENLEME: Geçici olarak aşağıdaki komutları çalıştırarak giderebildim

zip -d spring-android-core-1.0.1.RELEASE.jar META-INF/notice.txt

tüm yinelenen hatalar ortadan kalkıncaya kadar.



2
Bu, hata kodu.google.com/p/android/issues/detail?id=61573 gibi görünüyor . Bu sürümde neden sadece sizin için zahmetli olmaya başladığını bilmiyorum.
Scott Barta

aynı sorun ile sıkışmış. Hata çözülene kadar Android Studio 0.3.7 ve 0.6.3 eklentisi gradle üzerinde kalmaya karar verdi
mente

6
İfadelerinizden net olmalısınız: 0.7.0. sınıfını kullanmıyorsunuz - bu android sınıflandırma eklentisidir. 1.9.0 sürümünde gradle (sarmalayıcı ile) kullanır. Yanlış ifadeler, verilen bağlamın yanı sıra kafa karışıklığına yol açacaktır.
onigunn

1
Lütfen Gradle 0.9.1'denpickFirst beri mevcut olan seçeneğe dikkat edin .
JJD

Yanıtlar:


475

Android Studio sürüm 0.8.14'ten itibaren

Eklemelisiniz:

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

build.gradledosyasına ekleyin .

Tarih:

Bu hatadaki 14 yoruma göre: https://issuetracker.google.com/issues/36982149#comment14 Bu, Android Gradle eklentisinin v0.7.0 sürümünde bir hata ve yakında 0.7.1'de düzeltilmesi bekleniyor.

İşte bu hatadan 0.7.1 için ekleme ile ilgili notlar:

Bunun için 0.7.1 çıktı.

Dosyaları hariç tutacak DSL:

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

İstediğiniz kadar dışlama ifadesi ekleyebilirsiniz. Değer, arşiv yoludur. Henüz joker karakter veya glob desteği yok.

"LICENSE.txt" ve "NOTICE.txt" dosya adları büyük / küçük harfe duyarlıdır. Lütfen "license.txt" ve "alert.txt" ile de deneyin.


12
Teşekkürler! Ben de 'META-INF / NOTICE.txt' dışlamak gerekiyordu;)
Climbatize

71
Günden güne, stackoverflow gelmeden önce programcıların nasıl uzaktan verimli olabildiklerine şaşıyorum. Düzeltme için teşekkürler! Bunun yerine META-INF / LİSANS ve / BİLDİRİM'i hariç tutmak zorunda kaldım. (Hiçbir txt, hatta son
sınıfta

3
Hangi dosyayı düzenlemeliyim ve nerede bulabilirim? teşekkürler Eyal.
eyal

2
@ um.anusorn Sean size bu dosyaları paketleme sırasında kütüphanelerden hariç tutan bir not dosyası için iyi bir örnek verdi. Benimkinde bu var: packingOptions {'META-INF / LICENSE' hariç 'META-INF / DİKKAT' hariç 'META-INF / BAĞIMLILIKLAR' hariç 'META-INF / license.txt' hariç 'META-INF / dependsenices.txt 'hariç tut' META-INF / dikkat.txt '}
praneetloke

4
Inşa araçların v0.12 hala yaygın hata .. Sadece söyleyerek
Nilzor

149

Benim durumumda birkaç ek istisna eklemek zorunda kaldım. Görünüşe göre bunu güzel bir tek katlı yapan düzenli ifadelerden hoşlanmıyor.

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

Sadece ihtiyacım vardı LICENSEve NOTICEekledikten sonra commons-lang3.
theblang

Bu bana yardımcı oldu (AndroidAnnotations + Spring REST şablonum var). Bu tür
hack'leri

Hangisinin etkilediğini bilmiyorum, ama bu gerçekten yararlı.
CopperCash

Benim için çalışmadı, hala gösteriyor Uyarı: Bağımlılık org.apache.httpcomponents: httpclient: 4.3, Android tarafından sağlanan dahili sürümle çakışabileceği için hata ayıklama için yok sayılır. Sorun olması durumunda, lütfen sınıf paketlerini değiştirmek için jarjar ile yeniden paketleyin
VVB

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

4
Son .txteke ihtiyacım vardı .
theblang

1
Yaptığım başka bir şey daha beni buraya getirdi ve .txtson eke ihtiyacım yoktu . Sanırım YMMV (ya da yılın zamanına bağlı olarak MMMV).
theblang

31

Sakiboy'un yorumuna bir göz at !


Eski cevap

Gradle 0.9.1 sürümünden aşağıdakiler desteklenir:

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

Gradle sürüm notlarında daha fazla bilgi .


3
Geliştiricilerin açık kaynak yazılım kullandıklarında bu dosyaları dahil etme yükümlülüğü olduğu için bu daha iyi bir çözümdür.
Louth

1
Güzel seçenek, ama bu yorum tamamen yanlış. Sadece firs kütüphanesinden alınan lisans dahil edilecektir, geri kalanı hariç tutulacaktır.
Igor Čordaš

1
2 kütüphane aynı .so dosyalarını kullanıyorsa bu yararlıdır
Fabian

Bunu aynı .class dosyasını içeren iki JAR için kullanabilir miyim? Her ikisi de org / xmlpull / v1 / XmlPullParser.class
WillC

2
@PSIXO, TÜM lisansları dahil etmek istiyorsanız aşağıdaki cevabı görebilirsiniz: stackoverflow.com/a/47828425/2371425
Sakiboy

12

Android Studio 0.8.6'da httclient-4.3.5 kütüphanesini dışa aktardığımda aynı sorun şunları içermelidir:

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

Kütüphane zip içeriği bir sonraki kavanoz:

commons-codec-1.6.jar
commons-logging-1.1.3.jar
fluent-hc-4.3.5.jar
httpclient-4.3.5.jar
httpclient-cache-4.3.5.jar
httpcore-4.3.2.jar
httpmime-4.3.5.jar

8

Bu hata 0.8 + / 1.10'da hala mevcut

Jackson ile

compile 'com.fasterxml.jackson.dataformat:jackson-dataformat-csv:2.2.2'

Derlemeden önce yukarıdaki öneriyi de dahil etmek zorunda kaldım

exclude 'META-INF/services/com.fasterxml.jackson.core.JsonFactory'

'META-INF / services / com.fasterxml.jackson.core.JsonFactory' nasıl hariç tutulur. Hangi dosyayı düzenlemeliyim?
UmAnusorn

6

Birden fazla hata var

Altında apply plugin: 'android-library'

bunu ekle ::

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

Yinelenen dosyalar olması kolaysa JAR, META-INFdizin altına bakın ve hataya neyin neden olduğunu görün. Birden fazla olabilir. Benim durumumda Couchbase Lite eklentisi. Daha fazla eklenti ekledikçe daha fazla istisnaya ihtiyacınız olacak


Aptalca soru: JAR dosyası nerede?
WillC

Android Studio'da Gradle'ı --info bayrakla çalıştırmak, apk'ye eklenen sınıfların günlüğünü görmeme izin verdi ve daha sonra farklı bir JAR'dan eklenen aynı sınıfın günlük girişini bulmak için yukarı doğru arama yapabilirim. Bu da bana her iki JAR dosyası için dosya yolunu gösterdi. Bir diğeri üzerinde bir .class dosyası seçmek için iyi bir yol bulamadım, bu yüzden JAR dosyalarından birini değiştirdim ve yinelenen .class kaldırıldı
WillC

4

Android Studio 1.0.1'de 'org.springframework.android:spring-android-rest-template:2.0.0.M1' kullandığımda aynı sorun. Bunu dahil etmeliyimbuild.gradle

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

3

Bu benim için çalışıyor:

android {
   packagingOptions {
       exclude 'LICENSE.txt'
   }
}


2

Sorun, META-INF klasörünün bu şekilde birden çok girişi filtrelememesi NOTICEveya LICENSEçoğaltılmasına neden olması ve bunları birlikte kopyalamaya çalışmasıdır.

Kirli Hızlı Onarım:

.jarsizin dosyayı .gradle/caches/...klasöre (uyumlu bir araç zip ile) ve kaldırmak veya dosyaları yeniden adlandırmak META-INFo hataya neden (usally klasörün NOTICEveya LICENSE). (OP'de de olduğunu biliyorum, ama benim için google forumunu okuyana kadar net değildi)

DÜZENLE:

Bu 0.7.1'de düzeltildi. Dışlamak için confilcting dosyalarını ekleyin.

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

Üzgünüm, şimdi anlıyorum.
UmAnusorn

Belki de en kötü cevap: gradle önbellekteki kavanozları değiştirmek sağlama toplamlarını değiştirebilir ve sonuç olarak uzun süre çalışmayacaktır ... bunun yanı sıra, bunlar sizin kavanozlarınız değil
Riduidel

Evet, bu yüzden kalın harflerle "Kirli Hızlı Onarım" yazıyor. Ayrıca doğru çözüm sadece bir paragraf uzaklıktadır. Bunun temiz bir çözümün olmadığı bir zamanda yazıldığını fark ediyorsunuz, ancak insanların hala uygulamalarını derlemesi gerekiyordu.
Patrick Favre

2

Burada olduğu gibi

dependencies {
    compile 'org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:1.0.0'
}

packagingOptions {
    exclude 'META-INF/DEPENDENCIES'
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/NOTICE'
}

Bu garip hata için 2 gün gibi kaybettim ... Bu neden hala 1.0.0. sınıfta oluyor? Bu yeni başlayanlar için çok rahatsız edici ... Neyse, kodumda olduğunu düşündüm bu bilgi için teşekkürler :)


2

Bu hatanın hangi dosyaya geldiğini bilmek önemlidir (örnekte META-INF / LICENSE.txt'dir), benim durumumda META-INF / LICENSE [".txt" olmadan] ve sonra dosyada META-INF / ASL2.0 böylece build.gradle bu satırları ekledi:

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

Çok önemli (!) -> dosyanın adını aynı stilde ekleyin, hata iletisinde gördüğünüz gibi: metin büyük / küçük harfe duyarlıdır ve * .txt ile * arasında bir fark vardır ("txt" olmadan) .


2

Açık kaynak kitaplıklarını kullanarak geliştirici olarak rolünüzü yapmak istiyorsanız, tüm açık kaynak lisanslarını bilgisayarınıza dahil etmeyi denemelisiniz apk. Bunu yapmak için, içindeki birleştirme yöntemini kullanabilirsiniz packagingOptions.

Misal:

packagingOptions {
        // This will get include every license and notice regardless of what dir it’s in.
        merge '**/LICENSE.txt'
        merge '**/NOTICE.txt'
        merge '**/notice.txt'
        merge '**/license.txt'
        merge '**/NOTICE'
        merge '**/LICENSE'
        merge '**/notice'
        merge '**/license'
        merge '**/LGPL2.1'
        // This will exclude any README files, regardless of the dir or the file type.
        exclude '**/README.*'
}

Bu cevap kullanmaktan daha iyidir, pickFirstçünkü bu yöntem sadece bulduğu ilk lisansı alır ve geri kalanını göz ardı eder, bu durumda işe yaramaz hale getirir.

Kısacası, kullandığınız mergekickass açık kaynak kütüphanelerinden gelen tüm lisansları dahil etmek için yöntemi kullanın.

Gradle PackagingOptions hakkında daha fazla bilgi .


2

AOSP'de bu taahhüt yorumunu fark ettim, çözüm DSL kullanarak bazı dosyaları hariç tutmak olacak. Muhtemelen 0.7.1 yayınlandığında.

commit e7669b24c1f23ba457fdee614ef7161b33feee69
Author: Xavier Ducrohet <--->
Date:   Thu Dec 19 10:21:04 2013 -0800

    Add DSL to exclude some files from packaging.

    This only applies to files coming from jar dependencies.
    The DSL is:

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

evet ve onlar sadece inşaat sitesinde sürüm notları yazdım, umarım merkezi merkezi maven için eseri yükleyecekler, böylece bunu kullanabiliriz!
Matt Wolfe

1

Benim durumumda sadece projenin build.gradle dosyasına eklemem gerekiyor:

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

   ...
}

0

Android Studio 1.1.0'da küçük harf adlarına ihtiyacım vardı:

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

0

"LICENSE.txt" ve "NOTICE.txt" dosyaları büyük / küçük harfe duyarlıdır. Bu yüzden SPring android kütüphanesi için

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

0

LICENSE hatamı kaldırdıktan sonra .txt kaldırılıyor:

packagingOptions {
    exclude 'META-INF/LICENSE'
}

0
  packagingOptions {
    exclude 'META-INF/DEPENDENCIES.txt'
    exclude 'META-INF/DEPENDENCIES'
    exclude 'META-INF/dependencies.txt'
    exclude 'META-INF/LICENSE.txt'
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/license.txt'
    exclude 'META-INF/LGPL2.1'
    exclude 'META-INF/NOTICE.txt'
    exclude 'META-INF/NOTICE'
    exclude 'META-INF/notice.txt'
}
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.