【发布时间】:2012-04-08 17:24:53
【问题描述】:
像android.os.Looper 这样的系统类的字节码只是一个存根。例如,来自android.jar 的android.os.Looper.loop() 包含以下字节码:
public static final void loop();
Code:
0: new #2; //class java/lang/RuntimeException
3: dup
4: ldc #3; //String Stub!
6: invokespecial #4; //Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V
9: athrow
但在 AOSP 中,我可以看到执行消息分发的真实源代码(参见 AOSP_ROOT/frameworks/base/core/java/android/os/Looper.java)。那么这个类究竟是如何被android系统处理的呢?将系统android.jar 编译为 dex 文件时是否修补了真实代码,还是在 Dalvik VM 中运行时发生?
【问题讨论】:
标签: java android compiler-construction dalvik