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是绕不过去的
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
2019-04-13 心电图
2016-04-13 混合知识点
2016-04-13 BroadcastReceiver广播接受者