【发布时间】:2011-11-30 07:57:58
【问题描述】:
我正在 Eclipse 中开发一个 Android 应用程序。我想针对各种设备和 SDK 版本(例如,我可以选择支持多点触控)。我理解 recommended approach 将所有新功能隔离到一个单独的类并利用延迟加载仅在主机设备实际支持该功能时才在运行时加载该类。
这种方法的缺点是我必须使用我想要使用的最新功能的 SDK 来编译我的所有代码。这意味着如果某些新功能泄漏到我的“版本中性”代码中,编译器将无法再捕获它。
我希望能够在 Eclipse 中针对较旧的 Android SDK 编译我的项目,以确保我的“版本中立”代码正常。如果可能的话,我想避免将我的构建系统移出 Eclipse。我可以接受这个旧的 SDK 版本运行起来有点尴尬。
我认为这归结为在 Eclipse 中进行一些条件编译(或条件“链接”)?例如,在针对 SDK-1.6 构建的项目中,我想将“MultiTouchHandler.java”源代码排除在构建之外。不过,我不确定是否可以在 Eclipse 中表达这样的“构建类型”。
hacky 解决方案似乎只是手动更改项目的 SDK 版本、重建和查看错误,并忽略“预期”错误。矫枉过正的解决方案似乎是编写我自己的 ant/maven/make 构建脚本。
相关问题
这个问题: Versioning and common code-bases with Eclipse 涵盖类似的基础,但涉及将所有特定于版本的类移动到单独的“库”中。 (我认为我仍然会在 Eclipse 中遇到多种构建类型的问题。)
这个问题: Build multiple project configurations with eclipse 暗示我应该迁移到外部构建系统(如 ant 或 maven),但这比不时尝试使用旧 SDK 构建要多得多。
【问题讨论】:
标签: java android eclipse compatibility conditional-compilation