Java Android targetSdkVersion:访问更高的功能和风险
我知道Java Android targetSdkVersion:访问更高的功能和风险,java,android,hardware-acceleration,Java,Android,Hardware Acceleration,我知道minSdkVersion和targetSdkVersion是如何工作的,但在这个具体案例中我需要确认(我不想意外地忽略任何事情) 我的应用程序(游戏)支持Android 2.2及以上版本的所有设备。到目前为止,minSdkVersion和targetSdkVersion被设置为8(即API级别8,对应于Android 2.2) 如果为其启用了硬件加速,我的一个视图的工作效率会显著提高,但我无法在项目中设置它,因为它需要API级别11。(当时我是怎么注意到的?我的一个测试设备在开发者设置中
minSdkVersion
和targetSdkVersion
是如何工作的,但在这个具体案例中我需要确认(我不想意外地忽略任何事情)
我的应用程序(游戏)支持Android 2.2及以上版本的所有设备。到目前为止,minSdkVersion
和targetSdkVersion
被设置为8(即API级别8,对应于Android 2.2)
如果为其启用了硬件加速,我的一个视图
的工作效率会显著提高,但我无法在项目中设置它,因为它需要API级别11。(当时我是怎么注意到的?我的一个测试设备在开发者设置中提供了一个复选框“强制GPU映射”,所以当我运行我的应用程序时,我注意到了差异。)
我假设解决方案是将targetSdkVersion
设置为11(但将minSdkVersion
保持为8),然后从代码中检查我们是否在API级别11或更高的级别上运行,然后为视图(窗口)启用硬件加速。最后一步需要更高的API级别,因为在源代码中无法识别FLAG\u HARDWARE\u ACCELERATED
假设我的所有代码只使用
minSdkVersion
API(除了在运行时检查平台版本是否有异常调用,如硬件加速),是否可以保证targetSdkVersion
以下的设备不会出现问题?(由于以上的解决方案,我的意思是。)我想避免我的应用程序在预蜂窝设备上不能正常工作。(请注意,我也根据平台版本在各种设备上测试我的应用程序,因此测试不是问题。)在您的活动中,如果您的窗口为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目标。我正准备这样做,但我感谢您的回答(如果您能确认我对新添加的问题的回答,我会将其设为一个答案)。很抱歉耽搁了(我不得不编辑我的帖子)。如果你能确认我新添加的问题,你对是什么意思?
?我编辑了我原来的帖子,请参见最后一段。我想问的是,使用minSdkVersion和targetSdkVersion(加上使用您添加的代码,是的)的方法是否在所有情况下都是安全的,即在预蜂窝设备上也是安全的。