将应用程序反向移植到 Android 1.5,我一直在修复 VerifyError 错误,但这里有一个比平时不那么明显的错误(此处为完整日志):
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或其父类Activity中都没有access
方法。非 API Android 源代码实际上包含ActivityThread.access,但我只使用公共 API。
此类CardEditor
不导入任何已编译的库(jar 左右)。导入语句要么是“android”。或引用同一项目中的 Java 源文件,从而同时重新编译。如果这很重要,这就是我总是编译的方式:ant clean debug
Android SDK 自动创建的新 Ant 文件。