微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – 在Eclipse中构建多SDK Android应用程序,而不会丢失编译时检查

我正在 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尝试构建要多得多.

解决方法

2012年2月(第17节)对ADT中的Lint工具的更新应该有助于解决这个问题,而无需多个构建.当应用程序针对旧的最小SDK,但是针对最新的SDK进行编译时(建议的做法),lint工具会注意是否调用了对较新SDK的调用.如果您确信调用正常(因为您已将其隐藏在运行时SDK_INT检查或其他任何内容之后),您可以快速修复注释以防止警告.

例如,在我的代码中,我调用了在API 11中引入的View.setsystemUIVisibility,但我的目标是API 8.运行Lint显示

Call requires API level 11 (current min is 8): android.view.View#setsystemUIVisibility

QuickFix建议了两种修复方法,要么添加一个抑制警告的注释,要么添加一个注释,该注释声明一大堆代码在API 11中工作.

更多细节:http://tools.android.com/recent/lintapicheck

原文地址:https://www.jb51.cc/android/130181.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐