2014-03-29 71 views
0

我感到困惑的目標構建和SDK使用API目標和分混亂

可以說,我有這樣的代碼

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT){ 
//do xyz 
} 

讓我們說,我建立了對API 19(奇巧)和我的目標API在清單中是19,我的最低支持API是9

現在,如果帶有API 9的設備運行上述代碼,它會崩潰嗎?我希望答案是肯定的,因爲它不會理解Build.VERSION_CODES.KITKAT的含義。然而,首先檢查上面的點是什麼?

請幫助澄清這一

謝謝

回答

0

它贏了不會崩潰。簡單的if中的代碼將不會被執行。 Build.VERSION_CODES.KITKAT是一個常量字段,正如您可以閱讀here,常量字段被編譯器自己替換爲數字本身。

+1

這是開始我一直在尋找的答案。在編譯器運行之前,我不知道編譯器將它替換爲數字。謝謝 – Snake

0

較小的Android版本將使用支持庫,如果套件-KAT校驗失敗,它會恢復到最近的possibkle形式的版本支持.. ..通過支持庫... 你不能運行你的應用程序在任何低於最低版本,但它會找到一種方式來運行比目標版本少,只要它的最低限度

0

不,它不會崩潰,因爲它的Build.VERSION.SDK_INT值是9.它不會在你的if子句中進入。只有具有API 19或更高版本的設備才能在if中運行您的代碼。 Build.VERSION_CODES.KITKAT等於19

0

您發佈根據你設定的目標API的不會崩潰,因爲類Build創建和編譯您的應用程序的每一個版本(如R文件)的代碼清單

當你設置你的目標API至19日,Build類將包含該領域Build.VERSION_CODES.KITKAT,因爲它的存在,從API級別19