2016-08-11 61 views
8

當使用Java 8功能時,我在非android模塊中獲得call requires api level X。 如何刪除它。 與註釋抑制似乎沒有以正確的方式給我調用需要在非android模塊中的api級別

+1

你解決了嗎? https://code.google.com/p/android/issues/detail?id=78382外觀相關。 – Giszmo

+0

發佈您的Gradle文件和代碼,以便SO成員可以重現相同的行爲,只需按照[如何創建最小,完整和可驗證的示例](http://stackoverflow.com/help/mcve)以及關於studio的詳細信息, JDK版本雖然錯誤報告(通過Giszmo鏈接)似乎引人注目 –

+0

張貼您的代碼和gradle – NishchalAndroid

回答

0

https://developer.android.com/guide/platform/j8-jack.html

Android支持所有的Java 7語言功能和對Java 8語言特性,通過平臺版本而異的一個子集。

對Java 8語言功能的支持需要一個名爲Jack的新編譯器。 Jack僅支持Android Studio 2.1及更高版本。

Android不支持所有Java 8語言功能。然而,開發應用定位的Android 7.0 (API級24)當使用以下功能:

  • 默認和靜態接口方法
  • Lambda表達式(也可在API級23和下部)
  • 重複標註
  • 方法引用(也API級別23可用,下)
  • 類型的註釋(也API級別23可用,下)

...強調我。

+0

Ups,現在我明白你不是在問關於Android模塊......所以你怎麼樣使用那些?如果將它們集成到Android應用程序中,即使它們沒有調用任何Android API,它們仍然必須遵守上述規則,但它們將由Android OS JVM運行。如果您僅在支持Java8的普通完整JVM上使用它們(例如在主機操作系統上運行的JUnit測試)(以便代碼不會落入.apk),只需將lint作爲緊急解決方案關閉即可。儘管我不知道它是不是應該足夠聰明才能意識到你沒有在Android代碼中使用Java8。 – Ped7g

+0

這裏不是OP。在我的項目中,它抱怨在我們使用API​​ API 14的應用程序庫模塊上的「調用需要API級別9(當前最小值爲1)」。 – Giszmo

+0

@Giszmo Java8相關性如何?如果特定的API調用有問題,那麼我認爲這是不同的皮棉檢查?爲什麼你的構建過程認爲它是在「當前minSdk = 1」:我不知道,谷歌或發佈問題的全部細節(構建腳本,項目定義等)。但是我沒有看到你的問題與Java8特性的聯繫。 – Ped7g

相關問題