在Dalvik vm中运行.dex文件(用smali编写)证明有一个验证错误

时间:2015-12-08 14:36:21

标签: android dalvik smali

这个'HelloWorld'添加两个数字并打印出答案

const int * const p1; // the exception
int const * const p2;

当我在Android设备上运行classes.dex时,adb shell会给我一个错误信息

.class public LHelloWorld;
.super Ljava/lang/Object;
.method public static main([Ljava/lang/String;)V
  .registers 5
  .parameter
  .prologue
  const v0, 0x2
  const v1, 0x4
  add-int/2addr v0, v1
  new-instance v3, Ljava/lang/StringBuilder;
  invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
  const-string v3, "The result is : "
  sget-object v2, Ljava/lang/System;->out:Ljava/io/PrintStream;
  invoke-virtual {v2, v3}, Ljava/lang/PrintStream;->print(Ljava/lang/String;)V
  invoke-virtual {v2, v0}, Ljava/lang/PrintStream;->println(Ljava/lang/Integer;)V
  return-void
.end method

我真的不明白为什么会发生错误。

请帮助,谢谢。

1 个答案:

答案 0 :(得分:0)

我发现问题出在哪里: 当打印int数字(不是Integer对象)时,参数类型应该是'I'而不是'Java / lang / Integer'。