如何使用针对Android制作的1.6以上但针对2.3.3的库?

时间:2011-09-19 19:59:28

标签: android android-library android-version

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

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

为什么库支持“Android 1.6及3.0”并且甚至不会编译1.6,因为它使用来自更高API的东西?

很好,我想,让我们将API Level设置为10,看看会发生什么。错误消失了,现在我只是发出警告,就像this one一样。我可以忍受这一点,这并不重要(但如果有任何办法从Eclipse中删除它,请告诉我)。

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

我该如何解决这个问题?如果该库据称支持“Android 1.6及高达3.0”,我如何在我的针对Android 1.6的项目中使用?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:-1)

尝试将Build.VERSION_CODES.GINGERBREAD更改为Build.VERSION_CODES.DONUT。不确定为什么你需要Build.VERSION_CODES.GINGERBREAD检查你的目标是1.6