1、smali和java基本数据类型对比
smali | java |
---|---|
B | byte |
S | short |
I | int |
J | long |
F | float |
D | double |
C | char |
Z | boolean |
V | void |
[ | 数组 |
L+全类名路径用/分隔,以分号结尾 2、注释 //java注释 #smali注释
3、类声明 java类声明 public class MainActivity smali类声明(要用类的全包名路径,全包名路径由大写L开头,全包名路径结尾要加英文分号;),示例如下 .class public Lcom/ylw/helloworld/MainActivity; 4、方法声明 java方法声明 public void showToast (View view) { smali方法声明,java里的花括号用 .method 和 .end method 代替,其中第一行最后一个大写的V表示返回值为void,括号内的 Landroid/view/View; 为参数的全包名路径,示例如下 .method public showToast(Landroid/view/View;)V
5、变量声明 java变量声明 private Button mBtn3 smali变量声明,mBtn3:Landroid/widget/Button; 中冒号用来解释mBtn3的类型,Landroid/widget/Button; 为Button类型的全包名路径,示例如下 .field private mBtn3:Landroid/widget/Button; 6、变量的取值赋值 java对于成员变量一般使用get、set方法进行取值和赋值。 java中直接使用方法的名称,传入相应的参数即可。 8、方法的取值(获取方法的返回值) java String a = getName()
smali实现上述java代码要分两步走: move-result-object v2 | object(对象和类 |