我使用baksmali分解了一个Android应用程序,并研究了产生的smali代码。其中一个类包含以下行:

.local v1, "future":Lcom/android/volley/toolbox/RequestFuture;, "Lcom/android/volley/toolbox/RequestFuture<Ljava/lang/Void;>;"

我不确定这行代码的含义。
v1是否包含RequestFuture<Void>,它与原始代码中的future变量相对应? (即原始代码是RequestFuture<Void> future;吗?)还是有些不同?

最佳答案

是的,这是可以有选择地显示的调试信息的一部分。在调试时使用它,例如评估局部变量的值。

您提到的.local就是您所说的。 v1寄存器保存原始源中future变量的值,其类型为RequestFuture<Void>
.local指令等效于该方法的调试信息中的DBG_START_LOCALDBG_START_LOCAL_EXTENDED指令,由dex format定义

10-08 14:54