使用Android 4.X编译,但支持API级别9

使用Android 4.X编译,但支持API级别9,android,intellij-idea,actionbarsherlock,Android,Intellij Idea,Actionbarsherlock,我正在开发一个使用ActionBarSherlock的应用程序。正如它所指出的: […]库要求它和您的项目都是 使用Android 4.0或更新版本编译。该项目还要求 您在编辑器和任何构建中都使用JDK1.6进行编译 您可能正在使用的系统 因此,这意味着我将针对Android 4.X编译我的应用程序(和库),但在我的清单中,我声明我的目标是(例如)API级别9 这一切都很好,但有一些事情让我不安。从: 使用库时,我应该在清单中针对哪种API级别? 需要针对API级别11或更高版本,因为这将导致A

我正在开发一个使用ActionBarSherlock的应用程序。正如它所指出的:

[…]库要求它和您的项目都是 使用Android 4.0或更新版本编译。该项目还要求 您在编辑器和任何构建中都使用JDK1.6进行编译 您可能正在使用的系统

因此,这意味着我将针对Android 4.X编译我的应用程序(和库),但在我的清单中,我声明我的目标是(例如)API级别9

这一切都很好,但有一些事情让我不安。从:

使用库时,我应该在清单中针对哪种API级别?

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

这意味着,我必须手动检查每个方法调用,所以我不使用任何在我的目标API级别(在我的情况下是9)中不可用的方法调用?这听起来不对

有没有办法告诉我的IDE(IntelliJ),我只使用API级别9(因此我不会自动完成不存在的方法/类,也不会意外使用它们),然后选择针对另一个Android版本编译它


或者我可以使用一些自动检查(在编译时运行)来检查它吗?

您可以临时将目标SDK设置为各种较低的SDK,并使用它进行调试。然后,您的最终构建是使用最新的SDK。

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

当为错误的API版本调用API时,ADT的lint功能应该通过发出警告来解决这一问题

您应该使用可用的最新SDK(目前为4.1)编译ABS和您的项目。您的清单应具有尽可能高的
targetSdkVersion
(理想情况下与您的编译SDK相匹配),并且您的
minSdkVersion
应设置为您支持的最低版本


Lint与IntelliJ IDEA部分集成,也可作为命令行工具使用。

与往常一样,您应该将targetSdk设置为manifest和project.properties文件中可用的最大值(如google在其视频中建议的),以便ADT&SDK能够相应地优化ADK


将minSdk设置为您希望支持应用程序的minSdk,并让Lint告诉您,如果您使用的功能太新,是否会出现任何问题。

哦,我以为您指的是手动,即查找每个呼叫并进行检查。我认为它不会自动满足你的需求。这是一个好主意,为未来的ADT更新,但我不认为它是目前可用的。但我不确定!设置生成目标与设置目标SDK版本不同。它也不需要对清单进行任何更改。我知道至少在eclipse中,更改构建目标将修复所有错误消息。您可能还希望包括更低的minSdkVersion以及您的targetSdkVersion,以便它可以从Play store上的minSdkVersion中获得。