minSdk,targetSDK,已弃用 - Android

时间:2014-01-23 20:37:38

标签: android api

如果我的目标API是19,而我的最小值是8,那么在函数中说它们是在API 11中引入的,并强制我在方法上面添加这种属性:@TargetApi(Build.VERSION_CODES.GINGERBREAD)

此方法不适用于API 8手机吗?

但是,如果该方法已弃用,它将适用于所有手机?因此,如果我在API 11中选择弃用和引入,我应该选择弃用吗?但是,如果我愿意做更多的工作,我可以查看手机API并运行适合该手机的方法吗?要么是这样,要么将我的最低API从8改为11?要查看我的minSDK应该是什么,我应该在目标API设置为低的情况下测试我的代码,如果它导致错误,请将我的minSdk设置为高于该值(或者解决错误...或者/或者)?

使用Android手机的用户可以更新其API级别吗?我没有Android,而谷歌也没有透露这一点。

“从Android 3.2(API级别13)开始,不推荐使用上述大小组,您应该使用swdp配置限定符来定义布局资源所需的最小可用宽度。” - 这是否意味着您应该使用swdp IF 您是先检查手机是否高于API12,还是将minSDK设置为13?

感谢。

2 个答案:

答案 0 :(得分:2)

  

此方法不适用于API 8手机吗?

如果通过“此方法”表示“您调用的方法,即在API级别11中添加,则触发了对@TargetApi”的需求,那么,是的,该方法将无法在API级别8上运行它是在API级别11中添加的,并且在此之前不存在。

  

但是,如果该方法已弃用,它将适用于所有手机吗?

一般来说,是的。大多数已弃用的方法都标记为已弃用,因为有更好的解决方案。某些方法已被弃用,并且由于安全原因或因为它们根本无法再支持它们而被更改为无效。这些通常在JavaDocs中注明。

  

因此,如果我在API 11中选择弃用和引入,我应该选择弃用吗?

理想情况下,您选择使用两者,使用Build.VERSION.SDK_INT来确定您正在运行的API级别。 API Level 11+方法通常比其弃用的对应方更丰富,更符合用户期望。因此,尽可能使用较新的API,并在必要时优雅地降级到较旧的API(不建议使用或不推荐使用)。

  

但如果我愿意做更多的工作,我可以查看手机API并运行适合该手机的方法吗?

是的,通过Build.VERSION.SDK_INT。请参阅http://developer.android.com/guide/practices/compatibility.html#Versions

  

要么是,要么将我的最低API从8改为11?

那将是另一种可能性。

  

要查看我的minSDK应该是什么,我是否应该在目标API设置为低的情况下测试我的代码,如果它导致错误,请将我的minSdk设置为高于该值(或解决错误...或者哪个)?

通常,您会根据市场选择最低SDK级别。现在,very few devices run API Level 8 or 9, and not that many run API Level 10。您可能认为测试旧设备可能不值得。

  

Android手机用户可以更新其API级别吗?

设备制造商有时会发布更新,有些用户可能会转向ROM mod,如Cyangenmod,升级超出制造商的范围。

  

我没有Android

如果不购买设备,我不会在Android开发中走得太远。模拟器虽然很好,但只是模拟器。

答案 1 :(得分:0)

@TargetAPI注释只会隐藏在API级别较低的设备上使用需要高于X的API的方法时出现的错误:

  

表示Lint应将此类型视为针对给定API级别,无论项目目标是什么。

过时的方法通常已经过时,因为它们是新API级别中的更好解决方案。这些新方法在较旧的级别中尚不存在,因此您必须使用这些设备的弃用方法。使用简单的if语句来检查用户正在使用的API级别,您可以选择适当的方法。

最后,有些设备太旧了,不再获得更新。因此,他们的API级别不会改变。