gpt4 book ai didi

java - android系统类编译

转载 作者:太空狗 更新时间:2023-10-29 12:53:05 35 4
gpt4 key购买 nike

android.os.Looper 等系统类的字节码只是一个 stub 。例如,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 运行时发生的?

最佳答案

用于编译代码的 android.jar 仅包含具有公共(public)(常量)字段和公共(public)方法的公共(public)类,但所有这些方法均不包含任何实现。所有返回类型不是 void 的方法都会抛出“ stub !” 运行时异常

具有真实实现的运行时库仅在手机设备或模拟器中与您的应用程序链接。

关于java - android系统类编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10064774/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com