7

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

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

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

这一切都很好,但有一些事情让我感到不安。从常见问题解答

使用库时,我应该在清单中定位什么 API 级别?

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

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

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

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

4

4 回答 4

8

ADT 的 lint 功能应该通过在为错误的 API 版本进行 API 调用时发出警告来解决此问题。

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

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

于 2012-07-30T19:50:01.460 回答
1

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

于 2012-07-30T18:42:03.003 回答
0

与往常一样,您应该将 targetSdk 设置为清单和 project.properties 文件中可用的最大值(正如 google 在他们的视频中推荐的那样),以便 ADT&SDK 能够相应地优化 ADK。

将 minSdk 设置为您希望从中支持您的应用程序的那个,并让 Lint 告诉您是否有任何问题,以防您使用太新的功能。

于 2012-07-30T20:04:26.347 回答
0

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

于 2012-07-30T18:46:07.853 回答