在针对不同目标的不同行为构建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();
}
答案 0 :(得分:0)
您需要将SDK目标更改为至少该方法所在的SDK。您应始终定位可用的最高API(目前为19),以便您的清单看起来像这样
<uses-sdk
android:minSdkVersion="5"
android:targetSdkVersion="19" />
如果您仍在定位SDK 5,那么您将处于黑暗时代
答案 1 :(得分:0)
minSdkVersion的目的是排除您不提供向后兼容性支持的平台。
为了为您的构建提供合适的库,您需要设置更高的targetSdkVersion,以便IDE或其他任何知道在创建APK时要包含哪些库。
听起来您不希望定位更高版本的SDK,因为某些方法或对象可能已被弃用甚至不受支持。这是在必要时使用支持库以实现向后兼容。