Java Smali toast显示代码注入错误-寄存器v1类型引用不匹配?
我将以下代码插入到反编译的应用程序中,以显示现有方法myMethod中的toast消息:Java Smali toast显示代码注入错误-寄存器v1类型引用不匹配?,java,android,reverse-engineering,smali,Java,Android,Reverse Engineering,Smali,我将以下代码插入到反编译的应用程序中,以显示现有方法myMethod中的toast消息: .method public myMethod(Ljava/lang/String;)V .locals 1 const/4 v0, 0x1 const-string v1, "Welcome to myMethod" invoke-static {p0, v1, v0}, Landroid/widget/Toast;->makeText(La
.method public myMethod(Ljava/lang/String;)V
.locals 1
const/4 v0, 0x1
const-string v1, "Welcome to myMethod"
invoke-static {p0, v1, v0}, Landroid/widget/Toast;->makeText(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast;
move-result-object v0
invoke-virtual {v0}, Landroid/widget/Toast;->show()V
return-void
.end method
应用程序编译良好,但当此方法被称为应用程序崩溃时,错误详细信息logcat日志:
java.lang.VerifyError: Verifier rejected class com.XXX: void com.XXX.myMethod(java.lang.String) failed to verify: void com.XXX.myMethod(java.lang.String): [0x3] register v1 has type Precise Reference: java.lang.String but expected Reference: android.content.Context (declaration of 'com.XXX' appears in /data/app/com.XXX/base.apk)
我遗漏了什么吗?makeText的第一个参数接受上下文对象。但是,您正在传递p0,它包含一个字符串对象(传递到方法中的字符串值)。makeText的第一个参数接受一个上下文对象。但是,您正在传递p0,它包含一个字符串对象(字符串值被传递到您的方法中)。谢谢您的回答。请你再详细说明一下好吗?它将帮助我学习如果我删除p0,它也将不起作用,因此应该有一个解决方法,你必须在上下文中通过。谢谢你的回答。请你再详细说明一下好吗?它将帮助我了解如果我删除p0,它也将不起作用,因此应该有一个解决方法,您必须在上下文中通过。