2015-06-08 153 views
2

我正在嘗試使用Android Studio生成PDF。我現在用的是iText庫,但是當我將其添加到Android的工作室,我得到以下錯誤:創建PDF時出錯

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.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 
+0

應該有在搖籃控制檯有關問題的更多信息,上面說你在你的問題顯示線某處。你也可以考慮發佈你的'build.gradle'文件,在那裏你聲明瞭iText的依賴關係。 – CommonsWare

+3

另外:iText依賴於類。您應該使用[iTextG](http://itextpdf.com/product/itextg)。這是一個適用於Android和iTextG的iText版本。 –

+0

我編輯我的代碼,對於DEXoverflow異常我使用此鏈接:http://www.mutualmobile.com/posts/dex-64k-limit-not-problem-anymore-almost但在此鏈接的結尾,他們說減慢應用程序。我應該使用這個還是不是。 – theLazyFinder

回答

1

我昨天遇到了類似的問題。只需添加到您的build.gradle文件和清潔/無效項目=)

android { 

    .... 

    dexOptions { 

     jumboMode = true 
    } 
} 
+0

是的,這是比我的有效的解決方案,(y) – theLazyFinder

0

我用iTextG庫通過 「布魯諾Lowagie」 作爲suggesed在評論和刪除未使用的庫。

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