2014-10-18 44 views
2

我正在編寫一個應用程序,使用AndroidStudio,目標API 19,但與最小的API 14。我發現,我使用的一些方法可從API 16 +。Android Studio - 如何從比min更高的API中找到方法以及如何處理它們?

AndroidStudio中有沒有一種方法可以找到比當前最小值更高的API可用的所有方法?

我該怎麼處理這種電話?當我將它們更改爲與較低API兼容時,AS告訴我這些方法已被棄用。那麼我能做些什麼來支持舊版本?

回答

4

爲了找到上面最小的SDK API的使用不起毛的API的使用,用這個gradle這個應該是在默認情況下,除非你有:

在你的build.gradle
lintOptions { 
    abortOnError false 
} 

如果你想使用的API,來自即。 KITKAT爲給定的對象,然後寫這樣的:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT_WATCH) { 
    obj.kitkatAndAboveApi(). 
} 

如果你想使用一些類從ie。 KITKAT和以上,那麼你將不得不編寫一個包裝類,以避免在加載不可分類時出現異常。這個類將負責加載這個kitkat類,並且只會在kitkat +上被你的應用程序使用。

您有時也可以使用反射查詢方法是否存在,然後調用它。

你也可以看看它是如何完成支持庫,即。爲向後兼容MenuItem

http://androidxref.com/4.4.4_r1/xref/frameworks/support/v4/java/android/support/v4/view/MenuItemCompat.java


一些澄清:

  1. 在Android Studio中0.8.9看到unaviable API的所有用途,使用菜單分析 - >檢查代碼。在結果中,您將擁有Android Lint - >'在舊版本中調用新方法'。這是您應該修復錯誤的列表。如果只有當皮棉錯誤的命令行完成

  2. 構建就會失敗,即:

$ gradlew建立

且僅當你還沒有加入abortOnError false。我不知道如何使lint錯誤失敗。

+0

由於Android Studio 0.8.9默認情況下未啓用,因爲我只看到應用程序在手機上崩潰(它在較高的API模擬器上編譯和工作)。至於檢查版本:我應該總是使用它,或者爲舊版和新版apis使用「已棄用」方法(這會留下更少的代碼,而且似乎我爲了兼容性而強制使用已棄用的調用) – 3yakuya 2014-10-18 19:44:07

+0

我添加了一些說明。至於使用不推薦使用的方法,如果您不希望超級乾淨,請使用適用於給定平臺的方法版本。但在此之前閱讀更多關於SO(即http://stackoverflow.com/questions/10164896/is-it-ok-to-have-so-many-deprecated-methods-in-backward-compatible-code) ,一些棄用的警告可以被抑制。 – marcinj 2014-10-18 21:59:32

+0

一切都很清楚,非常感謝。 – 3yakuya 2014-10-18 22:20:20

相關問題