2016-08-11 1 views
8

Java 8 기능을 사용할 때 비 안드로이드 모듈에서 call requires api level X이 발생합니다. 제거 방법. 주석을 억제하는 것은 안드로이드가 모든 Java 7 언어 기능 및 플랫폼 버전에 따라 다를 자바 8 언어 기능의 일부를 지원하는 저비 안드로이드 모듈에서 호출하려면 API 레벨이 필요합니다.

+1

해결 했습니까? https://code.google.com/p/android/issues/detail?id=78382 보이는 것처럼 보입니다. – Giszmo

+0

당신의 gradles 파일과 코드를 게시하여 SO 멤버가 동일한 동작을 재현 할 수 있도록 [최소한의 완전하고 검증 가능한 예제를 만드는 방법] (http://stackoverflow.com/help/mcve)과 스튜디오, JDK 버전 비록 버그 보고서 (Giszmo의 링크)가 매력적으로 보입니다. –

+0

코드 및 글을 – NishchalAndroid

답변

0

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

에 올바른 방법으로하지 않는 것 같습니다.

Java 8 언어 기능을 지원하려면 Jack이라는 새로운 컴파일러가 필요합니다. Jack은 Android Studio 2.1 이상에서만 지원됩니다.

Android에서 일부 Java 8 언어 기능을 지원하지 않습니다. 안드로이드 7.0 (API 레벨 24) 대상으로 애플리케이션 개발 그러나, 다음과 같은 기능을 사용할 수 있습니다

  • 람다 표현식 (또한 API 레벨 23에 사용할 수 있으며 낮은)

    • 기본 및 정적 인터페이스 방법을
    • (또한 API 레벨 23에 사용할 수 있으며 낮은) (또한 API 레벨 23에 사용할 수 있으며 낮은) 반복 주석
    • 방법 참조
    • 유형 주석
  • ... 나에 의한 강조.

    +0

    Ups, 이제 Android 모듈에 대해 묻지 않는 것을 이해했습니다. 그것들을 사용합니까? Android 애플리케이션에 이들을 통합하는 경우 Android API를 호출하지 않아도 위의 규칙을 따라야하지만 Android OS JVM에서 실행됩니다. Java 8을 지원하는 일반적인 JVM (호스트 OS에서 실행되는 JUnit 테스트와 같은)에서만 코드를 사용하는 경우 (코드가 .apk로 착오 지 않도록) 응급 솔루션으로 lint를 끄십시오. 안드로이드 코드로 Java8을 사용하지 않는다는 것을 깨닫기에 충분히 지능적이지 않아야하는지 궁금하지만. – Ped7g

    +0

    OP가 아닙니다. 내 프로젝트에서 min API 14가있는 응용 프로그램에서 사용하는 라이브러리 모듈에서 "호출에 API 수준 9 (현재 최소값 1) 필요"라는 문구가 표시됩니다. – Giszmo

    +0

    @Giszmo Java8은 어떻게 관련되어 있습니까? 특정 API 호출이 문제가된다면 다른 린트 체크일까요? 빌드 프로세스에서 "현재 minSdk = 1"이라고 생각하는 이유 : 전체 세부 정보 (빌드 스크립트, 프로젝트 정의 등)를 포함하는 질문을 모르거나, Google에 알리지 않습니다. 하지만 Java8 기능에 문제가 연결되는 것을 보지 못했습니다. – Ped7g

    관련 문제