28 android dalvik dex smali vm-implementation
我将学习一些关于Dalvik VM,dex和Smali的知识.
我读过关于smali的内容,但仍然无法清楚地了解它在编译器链中的位置.它的目的是什么.
这里有一些问题:
先感谢您.
Ant*_*ony 41
当您创建应用程序代码时,apk文件包含.dex文件,其中包含二进制Dalvik字节码.这是平台实际理解的格式.但是,读取或修改二进制代码并不容易,因此有一些工具可以转换为人类可读的表示形式.最常见的人类可读格式称为Smali.这与您提到的解码器基本相同.
例如,假设你有类似的Java代码
int x = 42
Run Code Online (Sandbox Code Playgroud)
假设这是第一个变量,那么该方法的dex代码很可能包含十六进制序列
13 00 2A 00
Run Code Online (Sandbox Code Playgroud)
如果你在它上运行baksmali,你会得到一个包含该行的文本文件
const/16 v0, 42
Run Code Online (Sandbox Code Playgroud)
这显然比二进制代码更具可读性.但是该平台对smali一无所知,它只是一个使字节码更容易使用的工具.
Dalvik和ART都采用包含dalvik字节码的.dex文件.它对应用程序开发人员完全透明,唯一的区别是安装和运行应用程序时幕后发生的事情.
| 归档时间: |
|
| 查看次数: |
18595 次 |
| 最近记录: |