Android targetSdkVersion:访问更高的功能和风险

时间:2012-10-07 11:11:31

标签: java android hardware-acceleration

我知道minSdkVersiontargetSdkVersion是如何工作的,但我需要在这个具体案例中得到确认(我不想忽视任何事情)。

我的应用(游戏)支持Android 2.2及更高版本的所有设备。截至目前,minSdkVersiontargetSdkVersion已设置为8(即API级别8,对应于Android 2.2)。

如果为其启用了硬件加速,我的Views之一会更加顺畅,但我无法在项目中设置它,因为它需要 API级别11 。 (我怎么注意到了?我的一个测试设备在开发者设置中提供了一个“强制GPU映射”复选框,所以当我运行我的应用程序时,我注意到了差异。)

我认为解决方案是将targetSdkVersion设置为11(但将minSdkVersion保持为8),并从代码中检查我们是否在API级别11或更高级别上运行,然后启用视图(窗口)的硬件加速。最后一步是需要更高API级别的内容,因为否则在源代码中无法识别FLAG_HARDWARE_ACCELERATED

假设我的所有代码仅使用minSdkVersion API(除了在检查平台版本以便在运行时进行异常调用时,例如硬件加速),是否保证不会在targetSdkVersion以下的设备上出现问题? (由于上述解决方案,我的意思是。)我想避免我的应用程序在预蜂窝设备上无法正常工作。 (请注意,我也在平台版本的各种设备上测试我的应用程序,因此测试不是问题。)

1 个答案:

答案 0 :(得分:1)

Activity中,如果您的窗口为API级别11或更高级别,请使用此行为您的窗口设置硬件加速:

if( Build.VERSION.SDK_INT >= Build.HONEYCOMB ) {
    getWindow().setFlags(
    WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
    WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
}

修改: 作为编辑的答案,Android Lint可能会抛出一个错误,说它不适用于TargetSDK,但它可以工作,不会为旧版本抛出任何异常。如果是的话,版本以某种方式> 10,这是不可能的。

但是你应该更新你的TargetSDK,因为通过使用硬件加速,你的目标是更高的API目标。