2016-08-11 18 views
8

Otrzymuję call requires api level X w modułach innych niż android podczas korzystania z funkcji Java 8. Jak go usunąć. Pomijanie z adnotacją nie wydaje się właściwą drogę do mnieWywołanie wymaga poziomu api w modułach innych niż android

+1

Rozwiązałeś to? https://code.google.com/p/android/issues/detail?id=78382 wygląda na powiązane. – Giszmo

+0

umieść swoje pliki gradle i kod, aby członkowie SO mogli odtworzyć to samo zachowanie, po prostu wykonaj [Jak utworzyć przykład minimalny, kompletny i możliwy do zweryfikowania] (http://stackoverflow.com/help/mcve) oraz szczegółowe informacje na temat studia, Wersje JDK, chociaż raport o błędzie (link Giszmo), wydają się być przekonujące, –

+0

po wpisaniu kodu i gradle – NishchalAndroid

Odpowiedz

0

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

Android obsługuje wszystkie Java 7 cech językowych i podzbiór funkcji Java 8 językowych, które różnią się od wersji platformy.

Obsługa funkcji języka Java 8 wymaga nowego kompilatora o nazwie Jack. Jack jest obsługiwany tylko w Androidzie w wersji 2.1 i nowszych.

Android nie obsługuje wszystkich funkcji języka Java 8. Jednakże, dostępne są następujące funkcje podczas tworzenia aplikacji kierowania Android 7.0 (API Poziom 24):

  • domyślnych i statyczne metody interfejsu
  • wyrażenia lambda (również na poziomie API 23 i dolny)
  • powtarzalne adnotacji
  • Referencje metodą (również dostępne na poziomie API 23 i dolne)
  • Rodzaj Adnotacje (dostępny również na poziomie API 23 i dolne)

... nacisk przeze mnie.

+0

Podskoki, teraz zrozumiałem, że nie pytasz o moduły Androida ... więc jak ty korzystać z nich? Jeśli zintegrujesz je z aplikacją na Androida, nadal muszą przestrzegać powyższych reguł, nawet jeśli nie wywołują żadnych interfejsów API Androida, ale będą uruchamiane przez JVM systemu operacyjnego Android. Jeśli używasz ich tylko na normalnym, pełnowartościowym JVM obsługującym Javę 8 (jak testy JUnit działające na hoście), po prostu wyłącz lint jako rozwiązanie awaryjne. Chociaż zastanawiam się, czy nie powinien on być wystarczająco inteligentny, aby zdać sobie sprawę, że nie używasz Java8 z kodem Android. – Ped7g

+0

Nie ten OP tutaj. W moim projekcie narzeka, że ​​"Call wymaga poziomu API 9 (bieżący min to 1)" na module bibliotecznym, którego używamy w aplikacji z min API 14. – Giszmo

+0

@Giszmo, w jaki sposób powiązana jest Java8? Jeśli chodzi o konkretne wywołanie API, to myślę, że to inna próba lint? Dlaczego twój proces tworzenia myśli, że jest w "aktualnym minSdk = 1": nie wiem, google, lub zadaj pytanie z pełnymi szczegółami (buduj skrypty, definicję projektu, itp.). Ale nie widzę połączenia twojego problemu z funkcjami Java8. – Ped7g