java代码编译得到smali代码
首先用Sublime(其他文本编辑器也可)编写一个java类
class A{
    String s = new String("text");
}
第二步:使用javac命令编译java文件得到class文件
javac是JDK自带的
javac A.java
第三步:使用jar命令编译class文件得到jar文件
jar是JDK自带的
jar cvf A.jar A.class
第四步:使用dx命令将jar文件编译成dex文件
dx.bat在Android SDK/build-tools/某一个版本下..
dx --dex --output A.dex A.jar
第五步:使用baksmali命令将dex文件反编译成smali文件
baksmali.jar可以网上去下载
java -jar baksmali-2.1.3.jar A.dex
最终得到一个out文件夹,里面就是我们需要的A.smali文件
.class LA;
.super Ljava/lang/Object;
.source "A.java"
# instance fields
.field s:Ljava/lang/String;
# direct methods
.method constructor <init>()V
    .registers 3
    .prologue
    .line 1
    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
    .line 2
    new-instance v0, Ljava/lang/String;
    const-string v1, "text"
    invoke-direct {v0, v1}, Ljava/lang/String;-><init>(Ljava/lang/String;)V
    iput-object v0, p0, LA;->s:Ljava/lang/String;
    return-void
.end method
因为在热修复框架中,smali是绕不过去的
 
                    
                     
                    
                 
                    
                
 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号