transform.TransformException в Android

Я получаю сообщение об ошибке, когда пытаюсь использовать iText для создания PDF-файла во время выполнения. Ошибка возникает, когда приложение запускается на устройстве или в geny Motion.

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.

Мой код Gradle:

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'

Пожалуйста, помогите мне решить эту проблему.


person Rishabh Saxena    schedule 29.06.2017    source источник
comment
Проверьте это - java.util.zip.ZipException: повторяющаяся запись   -  person Vishal Yadav    schedule 29.06.2017
comment
@vishal Я не менял систему и не переносил какой-либо проект, также используя последнюю версию v7 ​​.... С этой проблемой я сталкиваюсь, когда пытаюсь использовать iText и импортировать зависимости iText   -  person Rishabh Saxena    schedule 29.06.2017


Ответы (1)


duplicate entry: com/lowagie/bc/asn1/ASN1Encodable.class указывает на iText 2.1.7 или более раннюю версию, совместимость которой с Android неизвестна.

В вашем файле Gradle есть пара ошибок:

  • compile 'com.itextpdf:itext-pdfa:5.5.11' указывает на надстройку PDF/A для iText 5 версии 5.5.11, которая совместима с Android, но вам по-прежнему нужен порт iText 5 для Android, который называется iTextG. Поэтому вам нужно добавить compile 'com.itextpdf:itextg:5.5.10'. Да, 5.5.10, а не 5.5.11, потому что нет itextg:5.5.11. См. http://repo1.maven.org/maven2/com/itextpdf/itextg/
  • Я предполагаю, что вы думаете, что "а" в "pdfa" означает Android, но это не так. Это означает PDF/A: спецификация PDF для архивирования (ISO 19005), см. https://en.wikipedia.org/wiki/PDF/A. Если вам не нужна архивация (вероятно, в обычном приложении для Android она не нужна), вам, вероятно, придется удалить compile 'com.itextpdf:itext-pdfa:5.5.11'
  • compile 'com.itextpdf:itext7-core:7.0.3' – это iText 7, который несовместим с Android. Удалите эту строку.
  • compile 'itext:itext:1.3.1' - это ДРЕВНЯЯ версия iText, и, вероятно, она вызывает вашу ошибку. Удалите эту строку.
  • compile 'org.xhtmlrenderer:flying-saucer-pdf-itext5:9.1.6' - это что-то особенное, о чем я мало знаю. Он может или не может использовать другую зависимость iText, которая может быть или не быть неправильной версией. Отметьте свой вопрос flying-saucer, чтобы привлечь дополнительное внимание.
person Amedee Van Gasse    schedule 29.06.2017
comment
Спасибо, чувак, ты мне очень помог. Вместо использования различных библиотек iText нам нужно импортировать только одну компиляцию зависимостей «com.itextpdf:itextg:5.5.10». Это решит мою проблему... Спасибо. - person Rishabh Saxena; 30.06.2017