簡體   English   中英

如何確保Android中未調用不受支持的(更高級別)API?

[英]How do I make sure unsupported (higher level) API is not called in Android?

我正在為我的AndroidManifest.xml構建一個Gingerbread應用程序,並使用minSdkVersion=10targetSdkVersion=17

我知道在調用之前我應該​​檢查API是否受支持,例如:

private void removeRule(RelativeLayout.LayoutParams params, int rule) {
    if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { // API 17
        params.removeRule(rule);
    } else {
        params.addRule(rule, 0);
    }
}

但有時我會忘記/或者不知道我正在調用更高級別的API,偶爾會因為NoSuchMethodError異常而崩潰我的程序。

所以在我發布我的應用程序之前,我總是將我的項目設置為使用Android SDK 2.3.3並確保我沒有進行非法的方法調用(例如,我得到的所有錯誤都包含在檢查android SDK版本的if語句中),然后將SDK設置回4.2.2。

有沒有更好的方法來確保在不切換SDK的情況下不會調用不支持的API?

(PS我正在使用IntelliJ)

您可以(應該)運行Android Lint來檢查:

右鍵單擊項目(或包,類)>分析>檢查代碼。

在此輸入圖像描述

在Eclipse Properties - > Android Lint Preferences - > NewApi中,將Severity更改為Error。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM