【发布时间】:2013-06-13 06:03:35
【问题描述】:
如果我指定最低 SDK 为 2.0,目标 SDK 为 4.1,我是否必须编写显式代码以确保向后兼容。就像我想使用 SDK 级别 7 中引入的手势检测功能,我将目标设置为 7,最小值设置为 3。我问我是否需要编写显式代码(不包括手势检测功能)以便它在小于 7 但大于 3 的目标中运行?
【问题讨论】:
如果我指定最低 SDK 为 2.0,目标 SDK 为 4.1,我是否必须编写显式代码以确保向后兼容。就像我想使用 SDK 级别 7 中引入的手势检测功能,我将目标设置为 7,最小值设置为 3。我问我是否需要编写显式代码(不包括手势检测功能)以便它在小于 7 但大于 3 的目标中运行?
【问题讨论】:
是的,在旧版本的 Android 上运行时,您必须避免调用未来的 API。您可以组织代码以在运行时选择合适的代码路径,具体取决于您的操作系统版本。
An example of how to preserve backwards-compatibility when using a new API.
【讨论】:
是的,您需要这样做,但我认为在 8 (2.2) 之前仍然支持任何 API 没有任何合乎逻辑的理由。
它实际上是市场的 1.6%。不再值得维护和支持这样的早期版本。
也就是说,如果你需要做特定于版本的代码,这是处理它的方法:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ECLAIR) {
//Use API 7+ code
} else {
//Use backwards compatible code
}
【讨论】:
您应该查看 Android official site,了解如何保证向后兼容性到最低级别 4(无论如何,在 api 级别 7 之前可以忽略不计。稍微重要的份额通常是 api 级别 8 以上),并始终使用最新support library。
当然有一些小的代码更改(例如getSupportFragmentManager() 替换getFragmentManager() 等)。可能发生的最糟糕的情况是NoSuchMethodException,因此您必须非常小心,不要调用在较低平台中不存在的 API。 sdk 应该非常清楚地建议它发生时。
【讨论】: