使用 Android Studio 在 Android 项目中包含 iTextG

Including iTextG in an Android Project using Android Studio

在 Android Studio 中包含 iTextG 时出现以下错误,

com.android.dex.DexException: Multiple dex files define Lcom/itextpdf/awt/geom/AffineTransform;
    at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596)
    at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554)
    at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535)
    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)

不知道为什么,这个库里好像也有awt。这就是我包含它的方式:

  1. http://sourceforge.net/projects/itextg/
  2. 下载 itextg
  3. 解压 jar 文件
  4. 复制itextg-5.5.4.jar到app目录下的libs文件夹
  5. Gradle干净

为什么 awt 还在图书馆里?

请仔细阅读例外情况。它谈到 com.itextpdf.awt。那和禁止的java.awt.

不一样

您关于 awt 仍在图书馆中的说法 是错误的。 com.itextpdf.awt 包用于替换禁止的 AWT classes。这些替换 classes 本身是完全有效的,可以在 Android.

上使用

错误消息中解释了您遇到的问题:class com.itextpdf.awt.geom.AffineTransform 在不同的 DEX 文件中定义。这意味着您使用的不仅仅是 iTextG 5.5.x。您的设备上有多个 iTextG。将它们全部删除并确保只添加一个 iTextG 实例。