2

我的應用需要定位API級別7及以上,但是我希望在新版本可用時有選擇地使用新版本的功能。舉例來說,我可能有這樣的代碼:如何支持在eclipse中支持較老的android版本

if (Build.VERSION.SDK_INT >= 8) { 
    base64String = android.util.Base64.encodeToString(bytes, android.util.Base64.DEFAULT); 
} else { 
    base64String = MyCustomBase64.encodeBytes(bytes); 
} 

然而,當我在Eclipse中配置爲目標的「Android 2.1」項目(API 7)類android.util.Base64不是因爲它發現只有存在API 8及以上版本。然後,Eclipse將該行指定爲編譯錯誤(紅色「x」),因爲該類不在構建路徑中。

我的問題:在使用Eclipse進行Android開發時,處理這種開發(支持在目標環境中實際不存在的功能)的「正確」方式是什麼?

我總是可以將Eclipse中的目標更改爲2.2(API 8),但這並不理想。它造成了我可能不知不覺地使用一個只存在於8+中的特性,而不會被Eclipse通知這一事實的情況。

+0

你的MyCustomBase64是什麼?我有同樣的問題... – bersam

回答

1

您已回答了您的問題。

我總是可以在Eclipse中更改目標至2.2(API 8)

也就是說它是如何做。您仍然可以將清單中的minSDK/targetSDK設置爲7. AFAIK您只需使用if語句,就像您在更高API級別的任何代碼中顯示的一樣。

+0

未來API級別的環繞代碼與if語句不會阻止它們在項目目標設置爲2.1時顯示爲編譯錯誤。 此文檔似乎描述了首選方法: http://tools.android.com/recent/lintapicheck – jph

+0

但是,看起來可能有一個錯誤。我在我的代碼中使用了String.isEmpty(),同時使用了9的目標API和最低等級7(在清單中),並且它沒有被Lint檢查器標記爲錯誤。它應該是。 – jph

+0

hmm在它看起來很漂亮之前,還沒有玩過lint工具。我認爲,如果您要使用API​​ 7構建它,但是想要使用API​​ 8的功能,則無法避免編譯錯誤。我相信您唯一的選擇是使用更高級別的API構建項目。 – FoamyGuy