评论者:gshayban
从Android
{quote}
Android不运行Java字节码,它运行Dex字节码。你的类翻译成的是什么,这个dexdump输出很有趣。
JVM规范也不有趣。Android不是一个Java虚拟机。我们遵循JLS,但不遵循JVM规范(我们怎么能,因为我们不运行Java字节码)。因此,所有针对它的上诉都是无关的。我们试图在Dex字节码方面与JVM规范的精神相一致,但如果你的源代码不是Java,则没有任何保证。
现在,校验器(可能仍然是)在即使是对我们(相当糟糕)的规范的情况下也是损坏的,并且不幸的是我们不太一致。例如,在Marshmallow中,许多我们不能正确校验关于结构化锁定的代码被拒绝为VerifyError,这与JVM规范的精神不符。在下一个版本中,这将得到放松,并且将推迟到实际运行代码时进行检查。
遗憾的是,我们无法对旧版本分支做任何事情,你必须绕过任何问题。 :-( 当我有时间时,我会努力查看你的类。
{quote}
在Clojure中采取的变通方法似乎是所有方案中伤害最小的。