创建 PDF 时出错

error while creating PDF

我正在尝试使用 Android Studio 生成 PDF。我正在使用 iText 库,但是当我将它添加到 Android studio 时,出现以下错误:

Error:Execution failed for task ':app:dexDebug'. com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.7.0_79\bin\java.exe'' finished with non-zero exit value 2

当我删除库时,我的项目编译成功。当使用 Eclipse 而不是 Android Studio 时,它按预期工作。

编辑

这是我的 build.gradle 文件

apply plugin: 'com.android.application'

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    defaultConfig {
        applicationId "com.abc"
        minSdkVersion 9
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }
}

dependencies {

    compile project(':Wheel')
    compile project(':facebook')
    compile files('libs/mint-4.0.8.jar')
    compile 'com.android.support:support-v4:22.1.0'
    compile 'com.google.android.gms:play-services:7.0.0'
    compile 'com.android.support:appcompat-v7:22.1.0'
    compile 'com.google.code.gson:gson:2.3.1'
    compile 'com.android.support:recyclerview-v7:22.1.0'
    compile 'com.squareup.picasso:picasso:2.5.2'
    compile files('libs/itextpdf-5.5.6.jar')
}

并发布错误列表而不是行

UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexIndexOverflowException: Cannot merge new index 66843 into a non-jumbo instruction!
    at com.android.dx.merge.InstructionTransformer.jumboCheck(InstructionTransformer.java:109)
    at com.android.dx.merge.InstructionTransformer.access0(InstructionTransformer.java:26)
    at com.android.dx.merge.InstructionTransformer$StringVisitor.visit(InstructionTransformer.java:72)
    at com.android.dx.io.CodeReader.callVisit(CodeReader.java:114)
    at com.android.dx.io.CodeReader.visitAll(CodeReader.java:89)
    at com.android.dx.merge.InstructionTransformer.transform(InstructionTransformer.java:49)
    at com.android.dx.merge.DexMerger.transformCode(DexMerger.java:842)
    at com.android.dx.merge.DexMerger.transformMethods(DexMerger.java:813)
    at com.android.dx.merge.DexMerger.transformClassData(DexMerger.java:785)
    at com.android.dx.merge.DexMerger.transformClassDef(DexMerger.java:682)
    at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:542)
    at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)
    at com.android.dx.merge.DexMerger.merge(DexMerger.java:189)
    at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454)
    at com.android.dx.command.dexer.Main.runMonoDex(Main.java:303)
    at com.android.dx.command.dexer.Main.run(Main.java:246)
    at com.android.dx.command.dexer.Main.main(Main.java:215)
    at com.android.dx.command.Main.main(Main.java:106)
Error:Execution failed for task ':app:dexDebug'.
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.7.0_79\bin\java.exe'' finished with non-zero exit value 2

我按照 "Bruno Lowagie" 在评论和删除未使用的库中的建议使用了 iTextG 库。

出现com.android.dex.DexIndexOverflowException:异常是因为

根据 android 开发者网站

The Dalvik Executable specification limits the total number of methods that can be referenced within a single DEX file to 65,536, including Android framework methods, library methods, and methods in your own code. 

https://developer.android.com/tools/building/multidex.html

但是使用这种方法我们遇到了内存不足的问题。要解决这个问题,我们必须添加 android 闭包。

dexOptions { 
   incremental true 
   javaMaxHeapSize "4g" 
}

http://www.mutualmobile.com/posts/dex-64k-limit-not-problem-anymore-almost

我昨天遇到了类似的问题。只需将其添加到您的 build.gradle 文件和 clean/invalidate 您的项目 =)

android {

    ....

    dexOptions {

        jumboMode = true
    }
}