如何使用高于实际构建目标的android apis

时间:2014-01-17 15:17:11

标签: android eclipse lint

在针对不同目标的不同行为构建Android应用时,我们可以这样做:

if (Build.VERSION.SDK_INT < 10) {
    Toast.makeText(this.context, "Not Supported", Toast.LENGTH_LONG ).show();
} else {
    this.doComplicatedOperation();
}

但是在方法doComplicatedOperation()中,使用比当前构建目标更高的api类是合乎逻辑的(例如.api 5),但lint一直抱怨ClassIntroducedInApiLevel11无法解析为类型

我怎样才能更改项目编译的doComplicatedOperation()代码?

@TargetApi(11)
private void doComplicatedOperation() {
    ClassIntroducedInApiLevel11 = new ClassIntroducedInApiLevel11();
}

2 个答案:

答案 0 :(得分:0)

您需要将SDK目标更改为至少该方法所在的SDK。您应始终定位可用的最高API(目前为19),以便您的清单看起来像这样

<uses-sdk
    android:minSdkVersion="5"
    android:targetSdkVersion="19" />

如果您仍在定位SDK 5,那么您将处于黑暗时代

答案 1 :(得分:0)

minSdkVersion的目的是排除您不提供向后兼容性支持的平台。

为了为您的构建提供合适的库,您需要设置更高的targetSdkVersion,以便IDE或其他任何知道在创建APK时要包含哪些库。

听起来您不希望定位更高版本的SDK,因为某些方法或对象可能已被弃用甚至不受支持。这是在必要时使用支持库以实现向后兼容。