2017-10-04 77 views
1

我的項目使用Array#sort需要API等級24(安卓7.0)Android Studio中的minSdkVersion檢查爲Java 1.8(API等級24)具體功能

_tmp.sort((left, right) -> { ... };

但我也minSdkVersion 21(安卓5.0)

當我運行在Android 6.0模擬器的代碼,以下異常被拋出:

... Caused by: java.lang.NoSuchMethodError: No interface method sort(Ljava/util/Comparator;)V in class Ljava/util/List; or its super classes (declaration of 'java.util.List' appears in /system/framework/core-libart.jar)

我發現,其他用戶詢問此異常:java.lang.NoSuchMethodError: No interface method sort(Ljava/util/Comparator;) exception in sorting arraylist android

到Android工作室什麼好的辦法警告說,.sort不是在早期比Android 7.0操作系統是否可行?像API有@RequiresApi

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { ... }

回答

0

Android的工作室在我的電腦我的警告關於這個開箱即用,不知道爲什麼你沒有。也許你更改了你的lint警告配置?如果不是,你應該仍然能夠在那裏啓用。

+0

我知道爲什麼...我已經設置了'compileOptions {sourceCompatibility JavaVersion.VERSION_1_8}'。然後警告不見了... – kenjiuno

0

排序方法被註釋爲@Since 1.8

您可以更改設置 - >編輯 - >檢查

嘗試改變基於Java> Java語言級別遷移與艾滋病>用途Android Studio中的錯誤和警告級別她的配置文件中沒有提供API(描述爲:「此檢查發現在其文檔中具有@since標記的方法的所有用法」。)

+0

嗯。我只想使用在[支持的Java 8語言功能和API](https://developer.android.com/guide/platform/j8-jack.html#supported-features)中引入的** Lambda表達式**。它通過添加'compileOptions {sourceCompatibility JavaVersion.VERSION_1_8}'來構建.gradle。不過,它也允許我們調用API級別24的API,如** Array#sort **,而無需Android Studio上的任何API級別驗證。 – kenjiuno

相關問題