如何支持在eclipse中支持较老的android版本

问题描述:

我的应用需要定位API级别7及以上,但是我希望在新版本可用时有选择地使用新版本的功能。举例来说,我可能有这样的代码:如何支持在eclipse中支持较老的android版本

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通知这一事实的情况。

+0

你的MyCustomBase64是什么?我有同样的问题... – bersam

您已回答了您的问题。

我总是可以在Eclipse中更改目标至2.2(API 8)

也就是说它是如何做。您仍然可以将清单中的minSDK/targetSDK设置为7. AFAIK您只需使用if语句,就像您在更高API级别的任何代码中显示的一样。

+0

未来API级别的环绕代码与if语句不会阻止它们在项目目标设置为2.1时显示为编译错误。 此文档似乎描述了首选方法: http://tools.android.com/recent/lintapicheck – jph

+0

但是,看起来可能有一个错误。我在我的代码中使用了String.isEmpty(),同时使用了9的目标API和最低等级7(在清单中),并且它没有被Lint检查器标记为错误。它应该是。 – jph

+0

hmm在它看起来很漂亮之前,还没有玩过lint工具。我认为,如果您要使用API​​ 7构建它,但是想要使用API​​ 8的功能,则无法避免编译错误。我相信您唯一的选择是使用更高级别的API构建项目。 – FoamyGuy