评论者:gshayban
来自 Android
{quote}
Android 不运行 Java 字节码,而是运行 Dex 字节码。你类转换后的 dexdump 输出很有意义。
Java 虚拟机规范(JVMS)也并不有趣。Android 不是一个 Java 虚拟机。我们遵循 JLS,但不遵循 JVMS(因为我们不运行 Java 字节码,我们怎么可能呢)。因此,所有针对它的上诉都是无关紧要的。我们竭力符合 JVMS 的精神,考虑到 Dex 字节码,但如果你的源代码不是 Java,就没有任何保证。
现在,验证器(可能是现在仍然是)违反了我们(相当糟糕)的规范,甚至对于结构化锁定相关的错误,它在 Marshmallow 中将其拒绝对应为 VerifyError,这不符合 JVMS 的精神。然而,在下一个版本中,这将得到放宽,并推迟到代码执行时的实际检查。
遗憾的是,我们无法处理旧版本,您必须围绕任何问题进行工作。:-) 我会尽量在找到时间时查看您的类。
{quote}
听起来在 Clojure 中制定绕过机制是最小的问题。