0

我正在尝试在我的项目中使用一些 Android 库,但我遇到了最低 SDK 版本和目标 SDK 版本的问题。我正在谈论的库是这个 ActionBar。它在自述文件中说“该项目旨在为 Android 1.6 和最高 3.0 提供可重用的操作栏组件”

我想将我的应用程序定位为 1.6(如果我碰巧需要一些更高的 API,我会在必要时对其进行更改),因此我为 ActionBar 创建了一个 Eclipse 项目,构建目标为 API 级别 4 (1.6)。尽管库minSdkVersion设置为 4(并targetSdkVersion设置为 10),但该项目无法编译。确切地说,我认为属于 API 级别 10 (2.3.3) 的错误有 3 个,其中至少一个我肯定知道,因为它正在尝试使用Build.VERSION_CODES.GINGERBREAD,而 API 级别 4 上不存在。

这个库为什么支持“Android 1.6 和最高 3.0”,甚至没有考虑到 1.6 编译,因为它使用了更高 API 的东西?

好吧,我想,让我们将 API 级别设置为 10,看看会发生什么。错误消失了,现在我只有一个警告,就像这个一样。我可以忍受,这没什么大不了的(但如果有任何方法可以从 Eclipse 中删除它,请告诉我)。

然后我创建了面向 1.6 的项目,我将库引用到我的项目中,但我无法编译/运行它,因为与上面相同的错误也适用于此。

我该如何解决这个问题?如果该库据称支持"Android 1.6 and up to 3.0",我该如何在针对 Android 1.6 的项目中使用?

4

2 回答 2

1

我不熟悉您所说的库,但我认为您并不完全理解设置构建/编译目标和最低 SDK 版本之间的区别。将项目属性设置为针对 v10 和 targetSdk 构建为 10,然后将最小值设置为 4 是完全正常的。假设库编写正确,那么它将与旧版本保持兼容。它将通过在尝试访问旧版本上不存在的 API 之前检查正在运行的 Android 版本来做到这一点。但是,如果项目属性未设置为 10,那么如果它在更“现代”的 Android 版本上运行,它就不会知道该怎么做。

您可以在我的其他答案中看到有关 minSdk 与 targetSdk 设置的相关讨论。

于 2011-09-19T21:35:51.033 回答
-1

尝试将 Build.VERSION_CODES.GIGERBREAD 更改为 Build.VERSION_CODES.DONUT。如果您的目标是 1.6,不确定为什么需要 Build.VERSION_CODES.GIGERBREAD 检查

于 2011-09-19T20:59:27.683 回答