2012-07-30 91 views
7

我正在使用ActionBarSherlock的应用程序。因为它是documentation指出:使用Android 4.X进行编译但支持API级别9

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

因此,这意味着我将编译我的应用程序(库)对安卓4.X但在我的清单,我宣布,我将广告定位(例如)API级别9

这所有的工作都很好,但有些事情让我感到不安。来自FAQ

当我使用库时,我的清单中应该指定什么API级别?

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

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

有没有办法告诉我的IDE(IntelliJ),我只使用API​​级别9(所以我没有得到任何自动完成的不存在的方法/类,不使用它们偶然),然后选择对其他Android版本进行编译?

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

回答

8

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

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

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

1

您暂时将您的目标SDK设置为各个较低的SDK并使用它进行调试。然后你的最终版本是最新的SDK。

+0

这将是*手册*方法。 – 2012-07-30 18:47:09

+0

哦,我认为你的意思是通过查看每个电话和检查手册。我不认为它会自动实现你想要的。对于未来的ADT更新来说这是一个好主意,但我认为它目前不可用。但我不确定! – 2012-07-30 18:50:34

0

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

+0

正如@GeeksOnHugs所述...... – 2012-07-30 18:47:31

+0

设置构建目标不同于设置目标SDK版本。它也不需要对清单进行任何更改。我知道至少在Eclipse中改变构建目标将修复所有的错误信息。您可能还需要包含较低的minSdkVersion以及您的targetSdkVersion,以便它可以在Play商店的minSdkVersion中使用。 – Stevy888 2012-07-30 19:01:35

0

一如既往,您应该将targetSdk设置为清单和项目中可用的最大值。属性文件(由其在其中一个视频上的google推荐),以便ADT & SDK能够相应地优化ADK。

将minSdk设置为您希望支持您的应用程序的那个,并让Lint告诉您在使用过新功能的情况下是否有任何问题。

相关问题