2017-06-29 1 views
1

Ich erhalte einen Fehler, wenn ich versuche, iText zu verwenden, um eine PDF zur Laufzeit zu generieren. Der Fehler tritt auf, wenn die Anwendung im Gerät oder in der Software Motion ausgeführt wird.transform.TransformException in Android

Error:Execution failed for task ':app:transformClassesWithJarMergingForDebug'. 
com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: com/lowagie/bc/asn1/ASN1Encodable.class. 

Mein Gradle-Code ist:

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 25 
    buildToolsVersion "25.0.1" 
    useLibrary 'org.apache.http.legacy' 
    defaultConfig { 
     applicationId "com.visioneering.tfd" 
     minSdkVersion 15 
     targetSdkVersion 24 
     versionCode 5 
     versionName "1.5" 
     multiDexEnabled true 

    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 

    dexOptions { 
     preDexLibraries = false 
     javaMaxHeapSize "4g" 
    } 
    android { 
     lintOptions { 
      checkReleaseBuilds false 
     } 
    } 
    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' 
    } 

} 

dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs') 
    compile 'com.android.support:appcompat-v7:25.2.0' 
    compile 'com.android.support:design:25.2.0' 
    compile 'com.google.firebase:firebase-core:10.2.1' 
    compile 'com.google.firebase:firebase-messaging:10.2.1' 
    compile 'com.github.florent37:materialtextfield:1.0.5' 
    compile 'com.android.support:cardview-v7:25.2.0' 
    compile 'com.android.support:support-v4:25.2.0' 
    compile 'com.google.android.gms:play-services:10.2.1' 
    compile 'com.fasterxml.jackson.core:jackson-databind:2.5.3' 
    compile 'com.googlecode.json-simple:json-simple:1.1' 
    compile 'com.weiwangcn.betterspinner:library-material:1.1.0' 
    compile 'com.android.support.constraint:constraint-layout:1.0.2' 
    compile 'com.itextpdf:itext7-core:7.0.3' 
    compile 'com.itextpdf:itext-pdfa:5.5.11' 
    compile 'itext:itext:1.3.1' 
    compile 'org.xhtmlrenderer:flying-saucer-pdf-itext5:9.1.6' 

} 

// ADD THIS AT THE BOTTOM 
apply plugin: 'com.google.gms.google-services' 

Bitte helfen Sie mir, dieses Problem zu lösen.

+0

prüfen diese - [java.util.zip.ZipException: doppelte Eintrag] (https://stackoverflow.com/a/39120731/6244429) –

+0

@vishal ich das System nicht geändert haben oder die Übertragung auch jedes Projekt mit spätestes v7 .... Dieses Problem, das ich gegenüberstelle, wenn ich versuche, iText zu benutzen und iText Abhängigkeiten zu importieren –

Antwort

2

duplicate entry: com/lowagie/bc/asn1/ASN1Encodable.class - das verweist auf iText 2.1.7 oder älter, von dem nicht bekannt ist, dass es mit Android kompatibel ist.

Es gibt ein paar Dinge falsch in Ihrer Gradle Datei:

  • compile 'com.itextpdf:itext-pdfa:5.5.11' - dass Punkte auf die PDF/A-Add-On von iText 5, Version 5.5.11, die mit Android kompatibel ist, aber Sie brauchen immer noch den Android-Port von iText 5, der iTextG genannt wird. Sie müssen also compile 'com.itextpdf:itextg:5.5.10' hinzufügen. Ja, 5.5.10, nicht 5.5.11, weil es keine itextg:5.5.11 gibt. Siehe http://repo1.maven.org/maven2/com/itextpdf/itextg/
  • Ich bin Erraten, dass Sie denken, das "a" in "pdfa" bedeutet Android, aber es nicht. Es steht für PDF/A: die PDF-Spezifikation für die Archivierung (ISO 19005), siehe https://en.wikipedia.org/wiki/PDF/A. Wenn Sie keine Archivierung benötigen (Sie tun wahrscheinlich nicht in einem typischen Android-App), so müssen Sie wahrscheinlich zu compile 'com.itextpdf:itext-pdfa:5.5.11'
  • compile 'com.itextpdf:itext7-core:7.0.3' entfernen - das ist iText 7, die mit Androidnicht kompatibel ist. Entferne diese Zeile.
  • compile 'itext:itext:1.3.1' - ist eine ältere Version von iText, und ist wahrscheinlich, was Ihren Fehler verursacht. Entferne diese Zeile.
  • compile 'org.xhtmlrenderer:flying-saucer-pdf-itext5:9.1.6' - das ist etwas Besonderes, über das ich nicht genug weiß. Es kann oder kann nicht eine andere Abhängigkeit von iText ziehen, die die falsche Version sein kann oder nicht. Markieren Sie Ihre Frage mit flying-saucer, um zusätzliche Aufmerksamkeit zu erregen.
+0

Dank Mann, du hilfst mir sehr. Anstatt verschiedene iText Libraries zu verwenden, müssen wir nur eine Abhängigkeit importieren "compile 'com.itextpdf: itextg: 5.5.10'" Das wird mein Problem lösen ... Danke –

+0

Das ist awsme. Versuche dies. https://stackoverflow.com/a/44843333/6523041 –