我一直在學習如何編碼smali文件,並且我創建了一個接受字符串參數並將其放入log.Its java的等價物是類似的東西這樣的:android dalvik驗證錯誤:register1 v1類型0,通緝參考
public void log(String param){
Log.d(param, param);
}
當我再次smalied,並簽署了APK,我得到了在logcat中出現以下錯誤:
10-05 21:52:42.081: W/dalvikvm(32021): VFY: register1 v2 type 0, wanted ref
10-05 21:52:42.081: W/dalvikvm(32021): VFY: bad arg 0 (into Ljava/lang/String;)
10-05 21:52:42.081: W/dalvikvm(32021): VFY: rejecting call to Landroid/util/Log;.d (Ljava/lang/String;Ljava/lang/String;)I
10-05 21:52:42.081: W/dalvikvm(32021): VFY: rejecting opcode 0x71 at 0x0000
10-05 21:52:42.081: W/dalvikvm(32021): VFY: rejected Lcom/shqipe/worthstream/utils/Utils;.log (Ljava/lang/String;)V
10-05 21:52:42.081: W/dalvikvm(32021): Verifier rejected class Lcom/shqipe/worthstream/utils/Utils;
10-05 21:52:42.081: D/AndroidRuntime(32021): Shutting down VM
這是smali文件的方法:
.method public static log(Ljava/lang/String;)V
.registers 2
.parameter "paramString"
.prologue
invoke-static {p1, p1}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
.line 63
return-void
.end method
任何人都可以解釋給我我如何調試這個錯誤?
反彙編生成的DEX。它看起來是你期望的方式嗎? – fadden
我拆開了它,它和我的預期完全一樣 – gkapagunta