问题在于dex格式的限制,特别是方法引用数量的 65536 限制。
要诊断问题,请将内存增加到更大的数量(启用调试/详细输出无济于事,奇怪的是)。就我而言,我在android-maven-plugin配置中添加了以下内容:
<dex>
    <jvmArguments>
        <jvmArgument>-Xmx4096M</jvmArgument>
    </jvmArguments>
</dex>
选择足够大的堆大小后,消息会更改为包含以下内容:
[INFO] trouble writing output: Too many methods: 172296; max is 65536. By package:
[INFO]     20 android.app
[INFO]     18 android.content
[INFO]      1 android.content.pm
[INFO]      7 android.content.res
[INFO]      7 android.hardware
[INFO]     38 android.media
[INFO]     20 android.opengl
[INFO]     11 android.os
[INFO]      1 android.text.method
[INFO]      8 android.util
[INFO]     38 android.view
[INFO]      2 android.view.inputmethod
[INFO]     21 android.widget
...
[INFO]      3 com.google.common.annotations
[INFO]    746 com.google.common.base
[INFO]      9 com.google.common.base.internal
[INFO]    833 com.google.common.cache
[INFO]   8478 com.google.common.collect
[INFO]     50 com.google.common.eventbus
[INFO]    385 com.google.common.hash
[INFO]    597 com.google.common.io
[INFO]     92 com.google.common.math
[INFO]    134 com.google.common.net
[INFO]    521 com.google.common.primitives
[INFO]    404 com.google.common.reflect
[INFO]    954 com.google.common.util.concurrent
[INFO]     16 default
[INFO]    227 it.unimi.dsi.fastutil
[INFO]   1370 it.unimi.dsi.fastutil.booleans
[INFO]  17249 it.unimi.dsi.fastutil.bytes
[INFO]  17249 it.unimi.dsi.fastutil.chars
[INFO]  17279 it.unimi.dsi.fastutil.doubles
[INFO]  17263 it.unimi.dsi.fastutil.floats
[INFO]  17309 it.unimi.dsi.fastutil.ints
[INFO]    628 it.unimi.dsi.fastutil.io
[INFO]  17315 it.unimi.dsi.fastutil.longs
[INFO]  26514 it.unimi.dsi.fastutil.objects
[INFO]  17257 it.unimi.dsi.fastutil.shorts
[INFO]      2 java.awt
[INFO]      5 java.awt.datatransfer
[INFO]    206 java.io
[INFO]    346 java.lang
[INFO]     10 java.lang.ref
[INFO]     71 java.lang.reflect
[INFO]     27 java.math
[INFO]     26 java.net
[INFO]    108 java.nio
[INFO]      6 java.nio.channels
[INFO]      2 java.nio.charset
[INFO]     13 java.security
[INFO]      2 java.text
[INFO]    382 java.util
[INFO]    128 java.util.concurrent
[INFO]     33 java.util.concurrent.atomic
[INFO]     40 java.util.concurrent.locks
[INFO]      6 java.util.jar
[INFO]      6 java.util.logging
[INFO]     10 java.util.regex
[INFO]     20 java.util.zip
[INFO]     26 javax.microedition.khronos.egl
[INFO]    188 javax.microedition.khronos.opengles
[INFO]      7 sun.misc
如您所见,fastutil类中有大量引用。
这个问题有两种可能的解决方案:
- 使用有问题的依赖项的替代方案(duh)。
 
- 使用优化器,例如Proguard(通用 Android,Maven-specific)。