2014-02-19 22 views
3

正如this question所指出的那樣,我做了一些測試,android.os.Build.VERSION_CODES適用於比您正在使用的平臺版本VERSION_CODE更早的平臺版本。爲什麼android.os.Build.VERSION_CODES在較舊的平臺上工作

E.g.這樣的:

android.os.Build.VERSION_CODES.HONEYCOMB 

也適用於薑餅設備,雖然Honecomb在後薑餅發佈

這似乎只適用於如果您的目標SDK晚於您使用的VERSION_CODE,這導致我認爲版本代碼以某種方式從目標SDK編譯到APK中。

現在,我的問題是:

這是如何工作的?根據鏈接問題的接受答案,這通過int別名工作,但Java似乎不支持別名。

回答

8

這是一個編譯時常量,它在生成的字節碼中被內聯。因此,符號不需要在運行時解析。

編譯時不變的東西是

+0

感謝初始化中初始化!我忘記的是最終的ints在編譯時被替換。 –

5

VERSION_CODES都是靜態的最終整數,這意味着當你構建你的應用程序時,所有的變量都被數字替換。基本上,如果在編譯之後查看應用程序的字節碼,則可能會看到對VERSION_CODES的任何引用僅由每個版本代碼變量代表的實際int取代。

相關問題