使用Android 4.X编译但支持API Level 9

7
我正在开发一个使用ActionBarSherlock的应用程序。正如文档所指出的那样:

[...]该库要求它和您的项目都必须使用Android 4.0或更新版本进行编译。该项目还要求您在编辑器和任何构建系统中都使用JDK 1.6进行编译。

这意味着我将针对Android 4.X编译我的应用程序(以及库),但是在我的清单文件中,我声明我正在针对(例如)API级别9进行目标设置。
这一切都很好地运作,但有件事情让我感到不安。从FAQ中得知:

使用此库时,我的清单文件应该针对哪个API级别进行目标设置?

需要针对API级别11或更高版本进行目标设置,因为这将导致Android在较新设备上自动添加本机操作栏。由于您将针对新的API进行编译,但您的应用程序可能在旧版Android设备上运行,因此必须特别小心地避免使用或正确检查并调用任何在最低SDK版本之后引入的方法。

这意味着我必须手动检查每个方法调用,以便不使用目标API级别中不可用的任何方法(在我的情况下是级别9)?这听起来不对。
有没有一种方法可以告诉我的IDE(IntelliJ),我仅使用API级别9(因此我不会得到任何不存在的方法/类的自动补全并且不会意外使用它们),然后选择针对另一个Android版本进行编译?
或者我可以使用某些自动化检查(在编译时运行)来检查它?
4个回答

8
ADT的lint功能应该能够负责警告错误地调用API版本的情况。您应该使用最新可用的SDK(目前为4.1)同时编译ABS和您的项目。您的清单应该有尽可能高的targetSdkVersion(理想情况下与您的编译SDK匹配),而minSdkVersion应设置为您支持的最低版本。Lint已部分集成到IntelliJ IDEA中,并且也可以作为命令行工具使用。

1

您可以将目标SDK临时设置为较低版本并进行调试。最终构建时,您需要使用最新的SDK。


哦,我以为你是指通过查找每个调用并检查手册来完成。我不认为它会自动执行你想要的操作。这是未来ADT更新的好主意,但我不认为目前可用。但我不确定! - Geeks On Hugs

0

设置一个与您在清单中提到的类似的构建目标。


设置构建目标与设置目标SDK版本是不同的。它也不需要对清单文件进行任何更改。我知道在Eclipse中更改构建目标将修复所有错误消息。您可能还想将最低minSdkVersion与targetSdkVersion一起包括在内,以便从Play商店的minSdkVersion开始可用。 - Stevy888

0

一如既往,你应该将targetSdk设置为manifest文件和project.properties文件中的最高可用版本(正如Google在他们的视频中推荐的那样),这样ADT&SDK就能相应地优化ADK。

将minSdk设置为你希望支持你的应用程序的版本,并让Lint告诉你是否存在使用过新特性而导致问题的情况。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接