2016-08-11 24 views
8

Tôi nhận được call requires api level X trong các mô-đun không phải là Android khi sử dụng các tính năng Java 8. Cách xóa. Đàn áp với chú thích dường như không đúng cách để tôiCuộc gọi yêu cầu cấp api trong các mô-đun không phải là android

+1

Bạn đã giải quyết vấn đề này chưa? https://code.google.com/p/android/issues/detail?id=78382 có liên quan. – Giszmo

+0

đăng các tệp và mã gradle của bạn để các thành viên SO có thể tái tạo cùng một hành vi, chỉ cần làm theo [Cách tạo một ví dụ tối thiểu, hoàn chỉnh và có thể xác minh được] (http://stackoverflow.com/help/mcve) cùng với chi tiết về studio, Các phiên bản JDK mặc dù báo cáo lỗi (liên kết bởi Giszmo) dường như hấp dẫn –

+0

đăng mã của bạn và gradle – NishchalAndroid

Trả lời

0

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

Android hỗ trợ tất cả các tính năng ngôn ngữ Java 7 và một tập hợp con các tính năng Java 8 ngôn ngữ khác nhau tùy theo phiên bản nền tảng.

Hỗ trợ tính năng ngôn ngữ Java 8 yêu cầu trình biên dịch mới có tên là Jack. Jack chỉ được hỗ trợ trên Android Studio 2.1 trở lên.

Android không hỗ trợ tất cả các tính năng ngôn ngữ Java 8. Tuy nhiên, các tính năng sau đây có sẵn khi phát triển các ứng dụng nhắm mục tiêu Android 7.0 (API level 24):

  • mặc định và phương thức giao diện tĩnh
  • biểu thức Lambda (cũng có sẵn trên mức API 23 và thấp hơn)
  • Chú thích có thể lặp lại
  • Phương pháp Tham khảo (cũng có sẵn ở cấp API 23 trở xuống)
  • Loại chú thích (cũng có sẵn ở cấp API 23 trở xuống)

... nhấn mạnh bởi tôi.

+0

Ups, bây giờ tôi đã hiểu bạn không hỏi về mô-đun Android ... sử dụng chúng? Nếu bạn tích hợp chúng vào ứng dụng Android, chúng vẫn phải tuân thủ các quy tắc trên, ngay cả khi chúng không gọi bất kỳ API Android nào, nhưng chúng sẽ được chạy bởi hệ điều hành Android JVM. Nếu bạn đang sử dụng chúng chỉ trên JVM chính thức hỗ trợ Java8 (giống như các kiểm tra JUnit đang chạy trên hệ điều hành máy chủ) (để mã đó không rơi vào .apk), chỉ cần tắt lint là giải pháp khẩn cấp. Mặc dù tôi tự hỏi nếu nó không đủ thông minh để nhận ra bạn không sử dụng Java8 với mã Android. – Ped7g

+0

Không phải OP ở đây. Trong dự án của tôi, nó phàn nàn về "Cuộc gọi yêu cầu cấp API 9 (min hiện tại là 1)" trên mô-đun thư viện mà chúng tôi sử dụng trên một ứng dụng có API tối thiểu là 14. – Giszmo

+0

@Giszmo Java8 có liên quan như thế nào? Nếu cuộc gọi API cụ thể được đề cập, thì đó là kiểm tra lint khác nhau mà tôi nghĩ? Tại sao quá trình xây dựng của bạn cho rằng nó nằm trong "minSdk = 1" hiện tại: Tôi không biết, google hoặc đăng câu hỏi với đầy đủ chi tiết (xây dựng tập lệnh, định nghĩa dự án, v.v.). Nhưng tôi không thấy kết nối của vấn đề của bạn với các tính năng Java8. – Ped7g

Các vấn đề liên quan