【问题标题】:error while creating PDF创建 PDF 时出错
【发布时间】:2015-08-22 23:57:15
【问题描述】:

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

错误:任务 ':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'' 完成非零退出值 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.access$800(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

【问题讨论】:

  • Gradle 控制台中应该有更多关于您的问题的信息,位于您在问题中显示的行上方。您也可以考虑在声明了 iText 依赖项的位置发布您的 build.gradle 文件。
  • 另外:iText 依赖于类。您应该改用iTextG。这是适用于 Android 和 iTextG 的 iText 版本。
  • 我编辑了我的代码,对于 DEXoverflow 异常我使用这个链接:mutualmobile.com/posts/dex-64k-limit-not-problem-anymore-almost 但在这个链接的末尾,他们说它会减慢应用程序。我应该使用这个还是不使用。

标签: android pdf android-studio itext


【解决方案1】:

我使用了“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

【讨论】:

    【解决方案2】:

    我昨天遇到了类似的问题。只需将其添加到您的 build.gradle 文件并清理/使您的项目无效 =)

    android {
    
        ....
    
        dexOptions {
    
            jumboMode = true
        }
    }
    

    【讨论】:

    • 是的,这比我的解决方案有效,(y)
    猜你喜欢
    • 2011-02-14
    • 1970-01-01
    • 2015-06-21
    • 2013-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多