如何在eclipse中支持旧的android版本

如何在eclipse中支持旧的android版本,android,eclipse,android-3.0-honeycomb,backwards-compatibility,android-2.2-froyo,Android,Eclipse,Android 3.0 Honeycomb,Backwards Compatibility,Android 2.2 Froyo,我的应用程序需要以API级别7及以上为目标,但我希望在新版本可用时有选择地使用新版本的功能。例如,我可能有这样的代码: if (Build.VERSION.SDK_INT >= 8) { base64String = android.util.Base64.encodeToString(bytes, android.util.Base64.DEFAULT); } else { base64String = MyCustomBase64.encodeBytes(bytes);

我的应用程序需要以API级别7及以上为目标,但我希望在新版本可用时有选择地使用新版本的功能。例如,我可能有这样的代码:

if (Build.VERSION.SDK_INT >= 8) {
    base64String = android.util.Base64.encodeToString(bytes, android.util.Base64.DEFAULT);
} else {
    base64String = MyCustomBase64.encodeBytes(bytes);
}
但是,当我在eclipse中将项目配置为目标“Android 2.1”(API 7)时,找不到Android.util.Base64类,因为它只存在于API 8及更高版本中。Eclipse然后将该行指定为编译错误(红色“x”),因为该类不在构建路径上

我的问题:在使用Eclipse进行Android开发时,处理此类开发(支持在目标环境中实际上不存在的功能)的“正确”方法是什么


我总是可以将Eclipse中的目标更改为2.2(API 8),但这也不理想。它造成了这样一种情况:我可能会在不知不觉中使用一个只存在于8+中的功能,而Eclipse不会通知我这一事实。

您已经回答了自己的问题

我总是可以将Eclipse中的目标更改为2.2(API 8)


就是这样做的。您仍然可以将清单中的minSDK/targetSDK设置为7。好的,您只需使用if语句,就像您在任何来自更高API级别的代码中所展示的那样。

在项目目标设置为2.1时,使用if语句围绕来自未来API级别的代码不会阻止它们显示为编译错误。本文档似乎描述了首选的方法:然而,似乎存在一个bug。我在代码中使用了String.isEmpty(),同时使用了9的目标API和7的最低级别(在清单中),Lint检查器没有将其标记为错误。应该是的。嗯,在它看起来很漂亮之前,我没有玩过线头工具。我认为,如果您打算使用API7构建它,但希望使用API8中的特性,那么就无法避免编译错误。我相信您唯一的选择是使用更高级别的API构建项目。构建过程(我继承了它,在某种程度上是“黑魔法”)使用gradle,并且该产品是一个APK,可以在API级别8的设备上正确安装和运行。我假设它从清单中读取minSdkVersion设置,并根据该设置进行构建。您的MyCustomBase64是什么?我也有同样的问题。。。