如何支持尽可能低的API版本?

时间:2013-06-12 13:55:35

标签: android

我正在开发一个Android库,我希望尽可能多地支持API版本。我偶然发现了AsyncTask的问题,并在SO上找到answer。建议使用的代码是:

if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.GINGERBREAD_MR1) {
    task.execute(params);
} else {
    task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, params);
}

我的问题是,如何包含建议的代码并支持尽可能低的API级别?我应该参考哪个API版本?我应该在uses-sdk标记inte清单中写什么?

由于AsyncTask中的字段THREAD_POOL_EXECUTOR仅可从API级别11获得。此代码是否可以编译到较低级别?

谢谢!

4 个答案:

答案 0 :(得分:3)

在清单集android:minSdkVersion="minimumApiYouNeed"中,这是您要支持的最低API,以及android:targetSdkVersion="maximumApi"。这是将用于编译代码的api。通过这种方式你可以做你在那里写的东西,如果你写过最小api不支持的东西,编辑会通知你,但如果你做的检查它会很好用< / p>

答案 1 :(得分:3)

假设您在清单

中存在以下行
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17"/>

这意味着您正在使用API​​-17中的功能,但为了确保向后兼容性,您的应用程序可以从最低API-8(Froyo)开始。

根据您的示例,对API-17或更低版​​本使用THREAD_POOL_EXECUTOR是可以的。使用Froyo设备运行代码也没关系。因为在这种情况下不会使用THREAD_POOL_EXECUTOR字段。

答案 2 :(得分:1)

除非您能找到适用于提供THREAD_POOL_EXECUTOR实施的早期API级别的库,否则您必须使用级别11或更高级别的API。另外,请检查Google是否提供了允许在API 11之前使用的任何后端口或支持库。

答案 3 :(得分:0)

这支持Android回2.1(sdk版本7),但是编译代码对抗sdk版本17(HoneyComb)。当然,您必须将该标记添加到清单中。

<uses-sdk
    android:minSdkVersion="7"
    android:targetSdkVersion="17" />

您的project.properties应该包含以下行:

# Project target.
target=Google Inc.:Google APIs:17