2011-09-19 68 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

相關問題