为什么android.os.Build.VERSION_CODES可以在旧平台上运行

时间:2014-02-19 07:50:37

标签: android version adt

正如this question所指出的以及我所做的一些测试,android.os.Build.VERSION_CODES适用于比您正在使用的VERSION_CODE平台版本更早的平台版本。

E.g。这样:

android.os.Build.VERSION_CODES.HONEYCOMB

也适用于Gingerbread设备,虽然Honecomb是在 Gingerbread之后发布的。

这似乎只有在您的目标SDK晚于您使用的VERSION_CODE时才会起作用,这使我得知版本代码以某种方式从目标SDK编译到APK中。

现在,我的问题是:

这是如何工作的?根据链接问题的接受答案,这通过int别名起作用,但Java似乎不支持别名。

2 个答案:

答案 0 :(得分:9)

这是一个在生成的字节码中内联的编译时常量。因此,符号不需要在运行时解析。

编译时常量是

答案 1 :(得分:5)

VERSION_CODES都是静态最终整数,这意味着在构建应用时,所有变量都只是用数字替换。基本上,如果您在编译后查看应用程序的字节码,您可能会看到对VERSION_CODES的任何引用仅替换为每个版本代码变量所代表的实际int