P.T*_*.T. 7 java eclipse compatibility android conditional-compilation
我正在Eclipse中开发一个Android应用程序.我想针对各种设备和SDK版本(例如,我可以选择支持多点触控).我理解推荐的方法将所有新功能隔离到单独的类,并利用延迟加载仅在运行时加载该类,如果主机设备实际支持该功能.
这种方法的缺点是我必须使用我想要使用的最新功能的SDK编译我的所有代码.这意味着如果某些新功能泄漏到我的"版本中立"代码中,编译器就无法再捕获它.
我希望在Eclipse中能够针对较旧的Android SDK编译我的项目,以确保我的"版本中立"代码没问题.如果可能的话,我想避免将我的构建系统移出Eclipse.我很好,这个旧的SDK构建运行起来有点尴尬.
我认为这归结为在Eclipse中做一些有条件的补充(或条件"链接")?例如,在我针对SDK-1.6构建的项目中,我想将"MultiTouchHandler.java"源保留在构建之外.我不确定是否有可能在Eclipse中表达这样的"构建类型".
hacky解决方案似乎只是手动更改项目的SDK版本,重建和查看错误,并忽略"预期"错误.矫枉过正的解决方案似乎是编写我自己的ant/maven/make构建脚本.
这个问题: Eclipse的版本控制和通用代码库 涵盖了类似的基础,但涉及将所有特定于版本的类移动到单独的"库"中.(我认为,我仍然会遇到Eclipse中多种构建类型的问题.)
这个问题: 使用eclipse构建多个项目配置意味着我应该转移到外部构建系统(如ant或maven),但这比仅使用旧SDK尝试构建要多得多.
2012 年 2 月 (v17) 对 ADT 中 Lint 工具的更新应该有助于解决这个问题,而无需多次构建。当应用程序以旧的最低 SDK 为目标,但针对最新的 SDK 进行编译时(这是推荐的做法),lint 工具将注意到是否调用了对较新 SDK 的调用。如果您确信调用没问题(因为您已将其隐藏在运行时 SDK_INT 检查后面,或者其他什么),您可以快速修复注释以防止出现警告。
例如,在我的代码中,我调用了 View.setSystemUiVisibility,它是在 API 11 中引入的,但我的目标是 API 8。运行 Lint 显示:
调用需要 API 级别 11(当前最低级别为 8):android.view.View#setSystemuiVisibility
QuickFix 建议两种修复方法,要么添加抑制警告的注释,要么添加声明一段代码在 API 11 上工作的注释。
更多详细信息请参见: http: //tools.android.com/recent/lintapicheck
归档时间: |
|
查看次数: |
2391 次 |
最近记录: |