API目标和最小混淆

时间:2014-03-29 19:14:30

标签: android

我对目标构建和sdk使用感到困惑

让我说我有这个代码

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

假设我是针对API 19(kitkat)构建的,而我在清单中的目标api是19,而我的最低支持api是9

现在,如果使用API​​ 9的设备运行上述代码,它会崩溃吗?我希望答案是肯定的,因为它不会理解Build.VERSION_CODES.KITKAT的含义。但是,首先检查的重点是什么?

请帮助澄清这个

谢谢

4 个答案:

答案 0 :(得分:0)

较小版本的android将使用支持库,如果对kit-kat的检查失败,它将恢复为版本支持的最近的可能形式....通过支持库... 你不能在低于最低版本的任何东西上运行你的应用程序,但只要它的最小值,它就能找到一种低于目标版本的方式

答案 1 :(得分:0)

它不会崩溃。只是if中的代码不会被执行。 Build.VERSION_CODES.KITKAT是一个常量字段,正如您可以阅读here一样,编译器会将常量字段替换为数字本身。

答案 2 :(得分:0)

不,它不会崩溃,因为它的Build.VERSION.SDK_INT值是9.它根本不会进入你的if子句。只有API版本为19或更高版本的设备才会在if中运行您的代码。 Build.VERSION_CODES.KITKAT等于19.

答案 3 :(得分:0)

您发布的代码不会崩溃,因为根据您在应用中设置的目标API,为应用的每个版本(作为Build文件)创建和编译了类R。清单

当您将目标API设置为19时,Build类将包含字段Build.VERSION_CODES.KITKAT,因为它从API级别19开始存在。