2011-09-19 42 views
0

我想在我的项目上使用一些Android库,但我遇到了最低SDK版本和目标SDK版本的问题。我在说的图书馆是this ActionBar。它在自述文件中说“这个项目旨在为Android 1.6和高达3.0提供可重用的操作栏组件”如何使用1.6以上版本的Android库,但是目标版本2.3.3?

我想在1.6版本中定位我的应用程序(如果我碰巧需要一些更高的API,我将在必要时进行更改),因此我为ActionBar创建了一个Eclipse项目,构建目标为API Level 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,看看会发生什么。错误消失了,现在我只是有一个警告,就像this one。我可以忍受这一点,这不是什么大问题(但是如果有任何方法可以从Eclipse中删除它,请让我知道)。

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

我该如何解决这个问题?如果图书馆应该支持“Android 1.6 and up to 3.0”,我该如何在我的项目中使用Android 1.6版本?

回答

1

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

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

-1

尝试将Build.VERSION_CODES.GINGERBREAD更改为Build.VERSION_CODES.DONUT。不知道为什么你需要Build.VERSION_CODES.GINGERBREAD检查,如果你的目标是1.6

+0

你说的是图书馆,那不是我的代码。我不能这样改变它,并期望一切都能正常工作。此外,我跟踪了该检查,并调用了属于API Level 10的一些方法。我不能删除整个代码... –

+0

但是如果您使用的是API方法级别10的调用,您会如何期待使用最低API级别4呢?那么你的代码应该被定位在API级别10。 – NujnaH

相关问题