我对目标构建和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的含义。但是,首先检查的重点是什么?
请帮助澄清这个
谢谢
答案 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开始存在。