0

我知道如何minSdkVersion工作targetSdkVersion,但在这个具体案例中我需要确认(我不想意外忽略任何事情)。

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

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

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

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

4

1 回答 1

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 目标。

于 2012-10-07T11:24:47.423 回答