评论由:gshayban发表
来自Android
{quote}
Android不运行Java字节码,它运行Dex字节码。你对类转换成Dex字节码的dexdump输出很有趣。
JVMS也不有趣。Android不是一个Java虚拟机。我们遵循JLS,但不遵循JVMS(我们怎么可能,因为我们不运行Java字节码)。因此,所有针对它的上诉都是无关紧要的。我们尽量与Dex字节码的JVMS精神相兼容,但如果您的源代码不是Java,则没有任何保证。
现在,验证器(可能仍然是)受损,甚至对我们的(相当差的)规范也是如此,遗憾的是我们并不非常一致。例如,在Marshmallow中,大量的代码无法正确验证有关结构化锁定的内容,并以VerifyError拒绝,这不符合JVMS的精神。然而,在下一个版本中,这将得到放松,并推迟到实际运行代码时进行检查。
遗憾的是,我们对旧版本没有任何办法,你必须解决任何问题。 :-( 一旦我有空,我会尽量查看你的类。
{quote}
看起来在 Clojure 中找到一个解决方案是最小化邪恶的方法。