无法重新打包smali文件错误代码:apktool无效的文字值低16位必须为零。
我应使用哪个寄存器值代替““ const / high16 v4”“”,并将其替换为0x7f04006a
.line 11
move-object v3, v0
move-object v4, v1
invoke-super {v3, v4}, Landroid/app/Activity;->onCreate(Landroid/os/Bundle;)V
.line 12
move-object v3, v0
const/high16 v4, 0x7f030000
invoke-virtual {v3, v4}, Lcom/mycompany/myapp/MainActivity;->setContentView(I)V
return-void
.end方法
我的公开ID为<public type="layout" name="main" id="0x7f04006a" />
答案 0 :(得分:0)
const/high16
指令接受16位文字,将其左移16位并将其加载到指定的寄存器中。
此指令的smali语法使用后移位的文字值。因此,在您的示例const/high16 v4, 0x7f030000
中,在原始字节码中,指令的实际文字参数将为0x7f03
。但是在smali语法中,它指定为移位后的形式:0x7f030000
。由于这是后移位形式,因此最后4个十六进制数字必须始终为0。
如果要加载不满足这些要求的文字值,则必须使用其他指令,例如const
指令。
const v4, 0x7f04006a