将一个应用程序向后移植到Android1.5,我一直在修复VerifyError错误,但这里有一个比平时明显得多的错误(full log here):
W/dalvikvm( 6978): VFY: invalid reg type 8 on iput instr (need 6)
W/dalvikvm( 6978): VFY: rejecting opcode 0x5c at 0x0004
W/dalvikvm( 6978): VFY: rejected Lcom/ichi2/anki/CardEditor;.access$1776 (Lcom/ichi2/anki/CardEditor;I)Z
W/dalvikvm( 6978): Verifier rejected class Lcom/ichi2/anki/CardEditor;
W/dalvikvm( 6978): Class init failed in newInstance call (Lcom/ichi2/anki/CardEditor;)
D/AndroidRuntime( 6978): Shutting down VM
W/dalvikvm( 6978): threadid=3: thread exiting with uncaught exception (group=0x4000fe70)
E/AndroidRuntime( 6978): Uncaught handler: thread main exiting due to uncaught exception
E/AndroidRuntime( 6978): java.lang.VerifyError: com.ichi2.anki.CardEditor
E/AndroidRuntime( 6978): at java.lang.Class.newInstanceImpl(Native Method)有趣的一行似乎是:rejected Lcom/ichi2/anki/CardEditor;.access
令人费解的是,在公共API的任何级别上,CardEditor类中都没有access方法,也没有它的父类Activity。非API Android源代码实际上包含ActivityThread.access,但我只使用公共API。
这个CardEditor类不导入任何已编译的库(jar或更多)。import语句可以是“android”。或者引用同一项目中的Java源文件,从而在同一时间重新编译。如果这很重要,我总是这样编译:ant clean debug,由Android SDK自动创建的新Ant文件。
发布于 2011-12-08 05:55:11
你可能遇到过Dalvik的限制。方法不能生成超过65535个字节码。尝试找出CardEditor中最大的方法,并将它们分成块。例如,调用其他方法,而不是在每个“case”之后直接编码,看看这是否有效。
请看一下this link
https://stackoverflow.com/questions/8335933
复制相似问题