- 声明类
.class public LHelloWorld;
.super Ljava/lang/Object;
类名HelloWorld,继承自java.lang.Object
- 构造函数
.method public constructor <init>()V
.registers 1 # 使用的寄存器个数
.prologue # 代码部分
# 调用Object的<init>方法
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void # 方法返回空
.end method
- main方法
.method public static main([Ljava/lang/String;)V
.registers 4
.param p0, "args"
.prologue # 方法体开始
# 加载对象
sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
# 常量字符串
const-string v1, "Hello World"
# 调用对象方法
invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
# 常量数字0
const/4 v2, 0x0
# 从数组p0中获取v2下标的值到v3
aget-object v3, p0, v2
# 调用对象方法
invoke-virtual {v0, v3}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
# 方法返回
return-void
.end method
- 编译
> java -jar smali.jar -o classes.dex HelloWorld.smali
- 运行
> adb push classes.dex /data/local
> adb shell dalvikvm -cp /data/local/classes.dex HelloWorld Hello
- 输出
Hello World
Hello