Có thể sử dụng Java 8 để phát triển Android không?


609

Tìm kiếm trên web, không rõ liệu Java 8 có được hỗ trợ cho phát triển Android hay không.

Trước khi tôi tải xuống / thiết lập Java 8, một số người có thể chỉ cho tôi bất kỳ tài liệu "chính thức" nào nói rằng Java 8 đang hoặc không được hỗ trợ để phát triển Android.


21
Tôi không biết về tuyên bố chính thức nhưng tôi đã có Java 8 (chỉnh sửa: JDK 8) hoạt động tốt với SDK Android cho tôi. Windows 8.1 64 bit tại đây.
Hoàng Huỳnh


2
@HoangHuynh bạn có thể sử dụng JDK 6 trở lên để phát triển Android. Tuy nhiên, quá trình biên dịch hỗ trợ Java phiên bản 6 (và 7 trong trường hợp KitKat). Tôi nghĩ ý nghĩa của OP cũng dành cho phiên bản java (không phải JDK)
waqaslam

13
Java 8 CHÍNH THỨC được hỗ trợ trong Android N. android-developers.blogspot.com/2016/03/iêu
Jay

Câu trả lời:


189

java 8

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

Để kiểm tra các tính năng nào của java 8 được hỗ trợ

Sử dụng các tính năng ngôn ngữ Java 8

Chúng tôi đã quyết định thêm hỗ trợ cho các tính năng ngôn ngữ Java 8 trực tiếp vào bộ công cụ javac và dx hiện tại và không dùng công cụ Jack. Với hướng mới này, các công cụ và plugin hiện có phụ thuộc vào định dạng tệp lớp Java sẽ tiếp tục hoạt động. Tiến về phía trước, các tính năng ngôn ngữ Java 8 sẽ được hỗ trợ bởi hệ thống xây dựng Android. Chúng tôi đang hướng tới việc ra mắt điều này như một phần của Android Studio trong vài tuần tới và chúng tôi muốn chia sẻ quyết định này sớm với bạn.

Tương lai của tính năng ngôn ngữ Java 8 trên Android

Người dùng Eclipse:

Đối với các nhà phát triển cũ thích Eclipse, google dừng hỗ trợ các công cụ Nhà phát triển Android của Eclipse

nếu bạn đã cài đặt JDK Java 8, thì hãy dùng thử, nếu có vấn đề nào xuất hiện, hãy thử đặt trình biên dịch thành 1.6 trong Eclipse từ menu cửa sổ → Tùy chọnJavaTrình biên dịch . Java 7 cũng sẽ hoạt động:

Tùy chọn Eclipse -> Java -> Trình biên dịch

Cần có Java 7 trở lên nếu bạn đang nhắm mục tiêu Android 5.0 trở lên.

cài đặt nhiều JDK và thử.


2
Java 8 có thay đổi cách hoạt động của mã byte không? Nếu không, sẽ tốt hơn nếu sử dụng bất kỳ phiên bản Java nào, theo lý thuyết, miễn là nó biên dịch.
Ben Leggiero

6
Câu hỏi chính xác là: nếu bạn sử dụng các tính năng mới trong java 8 không tồn tại trong java 7 để xây dựng ứng dụng Android thì có ổn không? để được an toàn theo hướng dẫn chính thức.
Anh. Samer T

12
@ BenC.R.Leggiero không có bytecode mới trong Java 8, nhưng ý nghĩa và cấu trúc các hướng dẫn đã được thay đổi stackoverflow.com/questions/28228450/... stackoverflow.com/questions/16143684/...
phuclv

17
Vui lòng không đăng "Cập nhật N" trong câu trả lời của bạn. Viết lại để có thông tin cập nhật. Mặt khác, SO trong một vài năm sẽ khó lấy thông tin từ các diễn đàn mà nó thay thế.
Alexanderr Dubinsky

1
Trả lời cần được cập nhật. Java 8 sẽ được hỗ trợ kể từ Android Studio 3.0 và Gradle Plugin 3.0.
Юрій Мазуревич

350

CẬP NHẬT 2017/11/04 - Android Studio 3.0 hiện đã có hỗ trợ riêng cho Java 8. gradle-retrolambda hiện không còn cần thiết nữa. Xem https://developer.android.com/studio/write/java8-support.html

Liên kết trên cũng bao gồm các hướng dẫn di chuyển nếu bạn đang sử dụng gradle-retrolambda. Câu trả lời gốc dưới đây:


Android không hỗ trợ Java 8. Nó chỉ hỗ trợ tối đa Java 7 (nếu bạn có kitkat) và vẫn không có inv invocate, chỉ có đường cú pháp mới.

Nếu bạn muốn sử dụng lambdas, một trong những tính năng chính của Java 8 trong Android, bạn có thể sử dụng gradle-retrolamba . Đó là một phụ thuộc xây dựng cấp độ tích hợp retrolambda, một công cụ chuyển đổi mã byte Java 8 trở lại Java 6/7. Về cơ bản, nếu bạn đặt trình biên dịch trong Android Studio để biên dịch mã byte Java 8, do đó cho phép lambdas, nó sẽ chuyển đổi nó trở lại mã byte Java 6/7, sau đó sẽ được chuyển đổi thành mã byte dalvik. Đây là một hack nếu bạn muốn dùng thử một số tính năng JDK 8 trong Android thay cho hỗ trợ chính thức.


13
Đó là một chút đấu tranh để làm cho nó hoạt động, nhưng một khi tôi thực sự làm theo đúng hướng dẫn, nó hoạt động tốt. Lưu ý với người dùng Eclipse: Eclipse không hoạt động tốt với điều này, tôi khuyên bạn nên chuyển sang Android Studio (tôi sẽ nhớ Eclipse, nhưng đó là cách nó phải diễn ra ngay bây giờ!)
Simon Forsberg

2
Nitpick: các mệnh đề đa bắt từ Java 7 KHÔNG được Android hỗ trợ.
csvan

11
Đa bắt được hỗ trợ, chỉ có tính năng JDK7 không được Android hỗ trợ là dùng thử với tài nguyên
Matthieu Harlé

12
Java 7 hoạt động với tất cả các phiên bản Android. Một ngoại lệ: try-with-resourceschỉ hoạt động kể từ Kitkat.
Dmitry Zaytsev

2
@Simon André Forsberg (lưu ý: plugin không biết xấu hổ!) - vì không hỗ trợ API luồng Java 8, bạn có thể sử dụng thư viện của tôi tại sourceforge.net/projects/streamsupport - nó giải quyết rõ ràng việc hỗ trợ cho Android.
Stefan Zobel

99

Bạn thực sự có thể sử dụng gradle-retrolambaphụ thuộc xây dựng lớp để sử dụng Java 8 cho Phát triển Android.

Dưới đây là hướng dẫn đầy đủ mà tôi đã theo dõi gần đây để chạy các biểu thức lambda cho phát triển Android. Nguồn gốc của hướng dẫn này được đề cập ở phần cuối.

Trong hướng dẫn này, một phương pháp đưa một số tính năng Java 8 vào Công cụ phát triển Android sẽ được trình bày, cụ thể là nhắm vào IDE Eclipse. Tuy nhiên, các bước sẽ được mô tả trong toàn bộ hướng dẫn này cũng có thể được điều chỉnh phù hợp với môi trường phát triển mới nổi của Google, Android Studio. Nó dựa trên phiên bản cộng đồng của IntelliJ Idea IDE nổi tiếng của JetBrains và gần đây nó đã được Google nâng cấp lên phiên bản 'beta' vào đầu tháng 7 năm 2014, một chút trước khi hướng dẫn này được viết. Eclipse sẽ vẫn là môi trường phát triển nổi bật, ít nhất là trong một thời gian và xem xét thực tế là hầu hết các dự án Android đã được phát triển bằng Eclipse, một phương pháp đưa các tính năng Java 8 mới như biểu thức lambda vào ADT dường như khá hữu ích cho các nhà phát triển.

Phát triển Android dựa trên một triển khai Java tùy chỉnh có tên là Dự án Harmony Harmony đã bị chấm dứt vào năm 2011. Cú pháp Java được sử dụng phổ biến nhất trong Phát triển Android là Java 6 (v1.6) và Java 7 (v1.7) cũng được hỗ trợ một phần trên phiên bản KitKat (Android 4.4. +). Do đó, các tính năng Java 8 như biểu thức lambda không thể được sử dụng trực tiếp trong Phát triển ứng dụng Android mà không áp dụng một số điều chỉnh vào các công cụ phát triển. May mắn thay, các cấu trúc này về cơ bản là một số cải tiến 'đường cú pháp' cung cấp cho các nhà phát triển những thiếu sót của những thứ như 'các lớp ẩn danh' và chúng có thể được dịch sang các lớp Java 6 hoặc Java 7.

Một cách tiếp cận gần đây để dịch mã nguồn Java 8 sang các phiên bản Java thấp hơn được gọi là RetroLambda . Thư viện này làm cho các nhà phát triển chạy mã Java 8 với các biểu thức lambda trên Java 7 hoặc thậm chí thấp hơn. Thật không may, hiện tại các tính năng của Java 8 không phải là biểu thức lambda không được RetroLambda hỗ trợ nhưng khái niệm biểu thức lambda là bước nhảy vọt lớn nhất trên nền tảng Java 8 và dù sao nó cũng là một công cụ tuyệt vời cho các nhà phát triển Android.

Chi tiết về thư viện này có thể được tìm thấy trên trang GitHub của nó:

https://github.com/orfjackal/retrolambda#getting-started

Ngoài ra, một plugin Gradle cho RetroLambda được tạo bởi một nhà phát triển khác cho phép các bản dựng dựa trên Gradle được triển khai trong các Dự án Java hoặc Android. Tuy nhiên, nhà phát triển chỉ đề cập đến việc tích hợp plugin này vào môi trường Android Studio. Chi tiết có thể được tìm thấy trên trang GitHub của nó:

https://github.com/evant/gradle-retrolambda

Việc sử dụng các cơ sở hạ tầng này trong môi trường phát triển dựa trên Eclipse có thể được tiếp cận trực tiếp nhưng điều đó là có thể thực hiện được và sẽ được thể hiện trong suốt hướng dẫn này.

Sự chuẩn bị

Hướng dẫn này giả định rằng người đọc có hiểu biết cơ bản về Phát triển Android và nó dựa trên phiên bản ADT 22.6.2 vì phiên bản ADT 23.0.2 gần đây dường như có vấn đề như tạo thư mục bố cục. Chi tiết về vấn đề này có thể được tìm thấy theo liên kết sau:

http://code.google.com.vn/p/android/issues/detail?id=72591

Các bước trong hướng dẫn này sẽ được cung cấp cho máy phát triển Windows 8.1, 64 bit nhưng chúng có thể dễ dàng thích nghi với các nền tảng khác. Hệ thống xây dựng mới Gradlesẽ được sử dụng cho các quy trình xây dựng / dọn dẹp và quy trình cài đặt cũng sẽ được cung cấp. Ngoài ra, cả hai JDK 8JDK 7phải cùng tồn tại trên máy phát triển. Các bước được đưa ra dưới đây phải được thực hiện để cài đặt chúng:

  • Truy cập trang xem trước truy cập sớm JDK 8 http://jdk8.java.net
  • Tải xuống JDK 8u20 và cài đặt nó. Cài đặt JRE 8 là không cần thiết và có thể bỏ qua
  • Truy cập trang phát hành ổn định mới nhất của JDK 7 http://www.oracle.com/technetwork/java/javase/doads/jdk7-doads-1880260.html
  • Tải xuống JDK 7u65 và cài đặt nó. Cài đặt JRE 7 một lần nữa là không cần thiết và có thể bỏ qua
  • Thêm thư mục nhà JDK 8 và thư mục JDK 8 binvào %PATH%biến của bạn
  • Tạo một biến môi trường mới JAVA_HOMEvới giá trị của đường dẫn của thư mục nhà JDK 8
  • Tạo lại một biến môi trường mới JAVA8_HOMEvới giá trị của đường dẫn của thư mục nhà JDK 8
  • Tạo một biến môi trường mới JAVA7_HOMEvới giá trị của đường dẫn của thư mục nhà JDK 7
  • Mở một cửa sổ đầu cuối và chạy java -versionlệnh và xác minh rằng Java 8 đang hoạt động
  • Chạy javac -versionlệnh trong cùng một cửa sổ và xác minh rằng trình biên dịch Java JDK 8 cũng đang hoạt động

Bây giờ, ADT-22.6.2 phải được tải xuống từ liên kết sau:

http://dl.google.com/android/adt/22.6.2/adt-bundle-windows-x86_64-20140321.zip

  • Tải xuống ADT và giải nén nội dung của nó vào một thư mục, vd D:\adt
  • Xác định một biến môi trường mới được gọi ANDROID_HOMEvới giá trị của đường dẫn của thư mục cài đặt ADT của bạn, vdD:\adt\sdk
  • Thêm Andoid SDK Platform ToolsAndoid SDK Toolsthư mục của bạn , ví dụ D:\adt\sdk\toolsD:\adt\sdk\platform-tools, vào %PATH%biến của bạn
  • Tạo một lối tắt đến IDE Eclipse nếu bạn muốn. Nó nằm trong thư mục cài đặt ADT của bạn, vdD:\adt\eclipse
  • Chạy IDE Eclipse và tạo một không gian làm việc, vd D:\adt\workspace
  • Nhấp vào Android SDK Managernút nằm trên thanh công cụ
  • Chọn Android SDK Build tools Rev. 19.1Android Support Librarychỉ. Bỏ chọn mọi thứ khác và cài đặt hai gói này.

Nếu mọi thứ suôn sẻ, ADT sẽ hoạt động.

Việc cài đặt các công cụ sau đây cũng rất được khuyến khích:

  • Hỗ trợ Java 8 của Kepler: Nó làm cho Eclipse nhận ra các phần mở rộng cú pháp Java 8 mới và làm cho bạn thoát khỏi sự khó chịu red dotstrong trình soạn thảo mã Java của bạn. Nó có thể được cài đặt thông qua Help -> Install New Softwaretrong Eclipse. Nhập http://doad.eclipse.org/eclipse/updates/4.3-P-builds/ vào Work withtrường và tiếp tục cài đặt nó.

  • Nodeclipse / Enide Gradle: Nó chủ yếu được sử dụng để làm nổi bật các từ khóa ngôn ngữ Groovy. Groovy được sử dụng làm tập lệnh xây dựng DSL cho Gradle. Plugin này có thể được cài đặt thông qua Eclipse Marketplace. Tuy nhiên, Eclipse trong ADT-22.6.2 không đi kèm Eclipse Marketplace Client. Do đó, trước tiên bạn sẽ cần cài đặt Eclipse Marketplace Clientbằng Install New Softwarecông cụ trong Eclipse. Nhập http //: download.eclipse.org/mpc/kepler/ vào Work withtrường và tiếp tục cài đặt nó. Sau khi cài đặt Eclipse Marketplace Client, bạn có thể tìm kiếm Nodeclipse/Enide Gradletrong Eclipse Marketplace Clientvà cài đặt nó.

  • Thiết bị ảo Genymotion: Đây là một sự thay thế tuyệt vời của mặc định Android Virtual Deviceđi kèm với ADT. AVD là cồng kềnh khó chịu và nó tiếp tục sụp đổ không có lý do. Genymotion làm cho bạn chuẩn bị Android VD bằng cách sử dụng các CyanogenModhình ảnh được thực thi bởi Oracle VirtualBox . Giấy phép người dùng duy nhất của nó là miễn phí và có thể được tải xuống từ http://www.genymotion.com . Chỉ cần đăng nhập và nó cũng có thể được tích hợp vào Eclipse. Chi tiết có thể được tìm thấy dưới đây:

https://cloud.genymotion.com/page/doc/#collapse8

Dưới đây là ảnh chụp màn hình của thiết bị ảo CyanogenMod dựa trên Android 4.3,

nhập mô tả hình ảnh ở đây

Nó có thể được coi là một thiết bị Android hoàn chỉnh chạy trên máy tính cá nhân dựa trên x86 hoặc x64. Để sử dụng các dịch vụ của Google như Google PlayStoretrên thiết bị ảo này, gappshình ảnh cho phiên bản Android mà nó sử dụng phải được chiếu lên thiết bị. Một gappshình ảnh phù hợp cho thiết bị có thể được tải xuống từ trang web CyanogenMod:

http://wiki.cyanogenmod.org/w/Google_Apps

Cài đặt Gradle là tùy chọn vì nó cũng được cung cấp bởi chính SDK Android nhưng việc cài đặt riêng biệt rất được khuyến khích. Việc cài đặt nó có thể được tiến hành bằng cách làm theo các bước sau:

  • Truy cập trang web Gradle: http://www.gradle.org/

  • Nhấp chuột Downloads

  • Trong Previous Releaseschọn phiên bản 1.10 và tải xuống gradle-1.10-all.zip hoặc gradle-1.10-bin.zip
  • Giải nén nội dung của nó vào một thư mục, vd D:\adt\gradle
  • Xác định một biến môi trường mới được gọi GRADLE_HOMEvới giá trị của đường dẫn của thư mục cài đặt Gradle của bạn, vdD:\adt\gradle
  • Thêm thư mục nhị phân Gradle của bạn, ví dụ D:\adt\gradle\bin, vào %PATH%biến của bạn
  • Mở một cửa sổ đầu cuối và chạy gradle -vlệnh và xác minh rằng nó đang hoạt động và nếu bạn đã đến thời điểm này thành công thì điều đó có nghĩa là bạn đã sẵn sàng tạo Ứng dụng Android đầu tiên của mình bằng các tính năng Java 8.

Ứng dụng demo

Một ứng dụng đơn giản sẽ được tạo ra để chứng minh việc sử dụng các công cụ đã được mô tả trong phần trước. Bạn có thể chỉ cần làm theo các bước được đưa ra dưới đây để hiểu rõ hơn về cách sử dụng biểu thức lambda trong Công cụ dành cho nhà phát triển Android:

  • Chạy IDE Eclipse và tạo Ứng dụng Android mới bằng cách chọn File -> New -> Other -> Android -> Android Application Project
  • Điền vào mẫu xuất hiện như hình dưới đây:

nhập mô tả hình ảnh ở đây

  • Chỉ cần nhấp vào Nextnút trên các biểu mẫu sau và nhấp vào Finishnút trên biểu mẫu cuối cùng. Đợi đến khi ADT hoàn thành tải lên dự án
  • Nhấp chuột phải vào dự án và chọn New -> Foldervà đặt tên cho nóbuilders
  • Nhấp chuột phải vào gen (Generated Java Files)thư mục và xóa nó. Gradle sẽ sớm tạo ra các tệp tương tự cho chúng tôi và chúng tôi sẽ thêm chúng vào s build path. Thethư mục gen` của dự án được tạo bởi trình xây dựng Ant mặc định không còn cần thiết và các tạo phẩm trong thư mục đó sẽ bị lỗi thời
  • Tạo các tệp bó sau trong buildersthư mục:

    • gradle_build.cmd
    • gradle_post_build.cmd
    • gradle_clean.cmd
  • Điền vào các tệp bó như sau:

gradle_build.cmd:

nhập mô tả hình ảnh ở đây

gradle_post_build.cmd:

nhập mô tả hình ảnh ở đây

gradle_clean.cmd:

nhập mô tả hình ảnh ở đây

  • Bỏ chọn Project -> Build Automaticallytùy chọn menu
  • Nhấp chuột phải vào dự án và chọn Properties -> Buildersvà bỏ chọn tất cả các trình tạo mặc định do ADT cung cấp
  • Nhấp vào Newnút trong cùng một cửa sổ và chọn Programvà nhấpOK
  • Cửa sổ cấu hình xây dựng mới sẽ xuất hiện. Điền vào các tab của nó như sau:

Main Tab cấu hình Builder mới

nhập mô tả hình ảnh ở đây

Refresh Tab cấu hình Builder mới

nhập mô tả hình ảnh ở đây

Environment Tab cấu hình Builder mới

nhập mô tả hình ảnh ở đây

Build Options Tab cấu hình Builder mới

nhập mô tả hình ảnh ở đây

  • Tạo trình xây dựng thứ hai được gọi là Gradle_Post_Buildsử dụng gradle_post_build.cmdnhư chương trình của nó. Tất cả các cài đặt khác của trình tạo này phải chính xác giống với trình tạo được tạo trước đó. Trình xây dựng này sẽ chịu trách nhiệm sao chép các tạo phẩm được tạo bởi quá trình xây dựng vào binthư mục.
  • Tạo trình xây dựng thứ ba được gọi là Gradle_Cleanersử dụng gradle_clean.cmdnhư chương trình của nó. Chỉ Run the builderthiết lập trong tab cuối cùng phải được đặt là During a Clean. Tất cả các cài đặt khác của trình tạo này phải chính xác giống với trình tạo đầu tiên. Trình xây dựng này sẽ chịu trách nhiệm làm sạch các tạo phẩm được tạo bởi quá trình xây dựng như tên cho thấy.

Nhà xây dựng mới của HelloLambdadự án

nhập mô tả hình ảnh ở đây

  • Nhấp chuột phải vào dự án và chọn Export
  • Chọn Android -> Generate Gradle Build Filesvà nhấpNext
  • Chọn dự án trong cửa sổ tiếp theo và nhấp Finish
  • Chuyển đến thư mục gốc của dự án của bạn và xóa các tập tin gradlewgradlew.bat. Cũng xóa gradlethư mục
  • Chuyển về Eclipse và chọn Project -> Cleantùy chọn menu. Điền vào biểu mẫu hiển thị như sau:

Clean Project Cửa sổ

nhập mô tả hình ảnh ở đây

  • Nhấp OKvà đợi cho đến khi quá trình làm sạch hoàn thành
  • Thêm đoạn mã Java được đưa ra bên dưới ngay sau khi gọi setContentViewhàm trong MainActivitylớp của bạn :

nhập mô tả hình ảnh ở đây

  • Thay đổi phần đầu của build.gradletệp cho đến sourceCompatibilityphần như sau:

nhập mô tả hình ảnh ở đây

  • Nhấp chuột phải vào dự án và chọn Properties -> Java Compilertùy chọn và đặt tất cả các mức tuân thủ thành Java 8. Điều này sẽ khiến Eclipse nhận ra các cấu trúc Java 8 mới như các biểu thức lambda.
  • Bấm vào Nocửa sổ thông báo
  • Nhấp chuột phải vào dự án và chọn Build project. Eclipse sẽ bắt đầu xây dựng dự án.

Xây dựng quy trình nhập mô tả hình ảnh ở đây

  • Nhấp chuột phải vào dự án và đi đến Properties -> Java Build Path. Thêm các thư mục sau vào đường dẫn xây dựng (cũng được hiển thị trong hình bên dưới):

    • build\source\buildConfig\debug
    • build\source\r\debug

nhập mô tả hình ảnh ở đây

Bây giờ Eclipse sẽ có thể nhận ra R.javabuildConfig.javacác tệp và nó sẽ không hiển thị bất kỳ red dotslỗi nào biểu thị các lỗi liên quan đến các tệp tài nguyên của dự án.

  • Tạo một cái mới Run Configurationcho nền tảng mục tiêu Android của bạn bằng cách nhấp chuột phải vào dự án và sau đó chọn Run As -> Run Configurations. Chẳng hạn, ứng dụng demo này trông giống như được hiển thị bên dưới trên Genymotion VD:

Ứng dụng HelloLambda

nhập mô tả hình ảnh ở đây

Bạn có thể quan sát trong LogCatcửa sổ rằng đoạn mã với biểu thức lambda đơn giản hoạt động đúng

nhập mô tả hình ảnh ở đây

Nguồn: Sử dụng Biểu thức Lambda Java 8 trong Công cụ dành cho nhà phát triển Android


Nhưng bạn có thể gỡ lỗi mã này bằng trình gỡ lỗi Android không? Các ngăn xếp / số dòng sẽ không tương thích là phỏng đoán của tôi. Có vẻ như một nhược điểm lớn đối với việc phát triển với Java 8 trên Android.
Zombie

2
@Zombie Có bạn vẫn có thể gỡ lỗi nó. Tất cả mọi thứ hoạt động tốt.
Korniltsev Anatoly

42

Theo liên kết này để cập nhật mới. Sử dụng các tính năng ngôn ngữ Java 8

Câu trả lời cũ

Khi phát hành bản xem trước Android N, Android hỗ trợ các tính năng hạn chế của Java 8, xem Các tính năng ngôn ngữ của Java 8

Để bắt đầu sử dụng các tính năng này, bạn cần tải xuống và thiết lập Android Studio 2.1 và SDK Android N Preview, bao gồm chuỗi công cụ Jack cần thiết và Plugin Android được cập nhật cho Gradle. Nếu bạn chưa cài đặt Android N Preview SDK, hãy xem Thiết lập để phát triển dành cho Android N .

Các tính năng và API ngôn ngữ Java 8 được hỗ trợ

Android hiện 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 hiện có sẵn khi phát triển ứng dụng nhắm mục tiêu Android N Preview:

Phương thức giao diện mặc định và tĩnh

Biểu thức Lambda (cũng có sẵn trên API cấp 23 trở xuống)

Chú thích lặp lại

Tài liệu tham khảo phương pháp (cũng có sẵn trên API cấp 23 trở xuống)

Có một số tính năng Java 8 bổ sung mà Android hỗ trợ, bạn có thể xem chi tiết đầy đủ từ Tính năng ngôn ngữ Java 8

Cập nhật

Lưu ý: Android N dựa trên việc triển khai các biểu thức lambda trên các lớp ẩn danh. Cách tiếp cận này cho phép chúng tương thích ngược và thực thi được trên các phiên bản Android trước đó. Để kiểm tra biểu thức lambda trên các phiên bản trước, hãy nhớ truy cập tệp build.gradle của bạn và đặt compileSdkVersion và targetSdkVersion thành 23 hoặc thấp hơn.

Cập nhật 2

Bây giờ Android studio 3.0 phát hành ổn định hỗ trợ thư viện Java 8 và các tính năng ngôn ngữ Java 8 (không có trình biên dịch Jack).


Tôi đã không hiểu điều gì đó. Có bất kỳ yêu cầu về minSdkVersion?
WindRider 11/03/2016

Tôi nghĩ rằng chỉ các biểu thức lambda là tương thích ngược, các tính năng Java 8 khác sẽ chỉ hoạt động trên N (hoặc phiên bản trong tương lai). Tôi chưa thử nghiệm điều này nhưng đây là những gì tôi hiểu từ các tài liệu Android. Vì vậy, đối với các tính năng của Java 8, minSdkVersion là N, ngoài biểu thức lambda

Vậy là ... vài năm nữa cho đến khi N trở thành người dẫn đầu trong bảng điều khiển. :(
WindRider 11/03/2016

Không may là đúng vậy. hoặc cho đến khi Android bằng cách nào đó cung cấp khả năng tương thích ngược như lambda

1
@WindRider, bạn có thể sử dụng minSdkVersion 15 trở lên. Hiện tại tôi đang sử dụng minSdkVersion 17 trong dự án Android của mình với Lambdas và mọi thứ đều hoạt động.
YYamil

22

Có, Android hỗ trợ Java 8 ngay bây giờ (24.1.17)

Bây giờ có thể

Nhưng bạn sẽ cần phải có rom thiết bị của mình chạy trên java 1.8 và bật "jackOptions" để chạy nó. Jack là tên của trình biên dịch Android mới chạy Java 8

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

thêm các dòng này vào build_gradle

    android {
  ...
  defaultConfig {
    ...
    jackOptions {
      enabled true
    }
  }
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}

Java 8 dường như là công cụ java đang chạy của Android studio 2.0, nhưng nó vẫn không chấp nhận cú pháp của java 8 sau khi tôi kiểm tra và bây giờ bạn không thể chọn trình biên dịch từ studio android. Tuy nhiên, bạn có thể sử dụng plugin scala nếu bạn cần cơ chế lập trình chức năng trong ứng dụng khách Android của mình.

nhập mô tả hình ảnh ở đây


1
Scala sẽ rất nặng nề để đóng gói với apk
TechSpellBound

Vui lòng tham khảo giải pháp này để cập nhật android studio 2.0 vì họ đã cập nhật các tùy chọn cấu hình giới hạn.
Gaurav Sharma

19

Android sử dụng Java tách ra khỏi Java 6.

Kể từ Android SDK phiên bản 19, bạn có thể sử dụng các tính năng Java 7 bằng cách thực hiện việc này . Không hỗ trợ đầy đủ cho Java 8 (chưa).


1
bạn là một phao cứu sinh Bạn có biết nếu có một cái gì đó sẽ triển khai thử tài nguyên theo cách tương tự không?
galets

@galets vẫn chưa có cách nào, nhưng tôi sẽ đặt cược vào việc Google sẽ thêm nó vào một lúc nào đó trong tương lai. Thông tin bổ sung, xem: stackoverflow.com/questions/16921337/ trên
chaqke

16

Bản địa Java 8 xuất hiện trên Android! Cuối cùng!

xóa plugin Retrolambda và khối retrolambda khỏi tệp build.gradle của mỗi mô-đun:

Để tắt Jack và chuyển sang chuỗi công cụ mặc định, chỉ cần xóa khối jackOptions khỏi tệp build.gradle của mô-đun của bạn

Để bắt đầu sử dụng các tính năng ngôn ngữ Java 8 được hỗ trợ, hãy cập nhật plugin Android lên 3.0.0 (hoặc cao hơn)

Bắt đầu với Android Studio 3.0, các tính năng ngôn ngữ Java 8 hiện được hỗ trợ bởi Android:

  • Biểu thức Lambda
  • Tài liệu tham khảo phương pháp
  • Chú thích loại (hiện tại thông tin chú thích loại không có sẵn trong thời gian chạy mà chỉ vào thời gian biên dịch);
  • Lặp lại chú thích
  • Các phương thức giao diện mặc định và tĩnh (trên API cấp 24 trở lên, không hỗ trợ chạy ngay lập tức);

Ngoài ra, từ API tối thiểu 24, API Java 8 sau đây có sẵn:

  • java.util.stream
  • java.util.f ghép
  • java.lang.FeftalInterface
  • java.lang.annotation. Có thể lặp lại
  • java.lang.reflect.AnnotatedEuity.getAnnotationsByType (Class)
  • java.lang.reflect.Method.isDefault ()

Thêm các dòng này vào build.gradle của mô-đun ứng dụng của bạn để thông báo cho dự án về cấp độ ngôn ngữ:

 android {
   compileOptions {
       sourceCompatibility JavaVersion.VERSION_1_8
       targetCompatibility JavaVersion.VERSION_1_8
   }

Vô hiệu hóa Hỗ trợ cho các tính năng ngôn ngữ Java 8 bằng cách thêm phần sau vào tệp gradle.properIES của bạn :

android.enableDesugar=false

Bạn đã hoàn tất! Bây giờ bạn có thể sử dụng java8 bản địa!


14

Android CHÍNH THỨC hỗ trợ Java 8 kể từ Android N.

Thông báo tính năng có ở đây , thông báo ngôn ngữ Java 8 là:

Hỗ trợ ngôn ngữ Java 8 được cải thiện - Chúng tôi rất vui mừng mang các tính năng ngôn ngữ Java 8 lên Android. Với trình biên dịch Jack của Android, giờ đây bạn có thể sử dụng nhiều tính năng ngôn ngữ Java 8 phổ biến, bao gồm cả lambdas và hơn thế nữa, trên các phiên bản Android từ thời Gingerbread. Các tính năng mới giúp giảm mã soạn sẵn. Ví dụ, lambdas có thể thay thế các lớp bên trong ẩn danh khi cung cấp trình lắng nghe sự kiện. Một số tính năng ngôn ngữ Java 8 - như các phương thức mặc định và tĩnh, các luồng và giao diện chức năng - hiện cũng có sẵn trên N trở lên. Với Jack, chúng tôi mong muốn theo dõi ngôn ngữ Java chặt chẽ hơn trong khi vẫn duy trì khả năng tương thích ngược.


Nó vẫn còn lỗi vào ngày này, ví dụ Instant Run không hoạt động với lambdas: nếu bạn thay đổi một số mã bên trong chức năng lambda của mình, nó sẽ không thay đổi.
adriendenat

12

Chúng ta có thể sử dụng Java 8 bằng cách sử dụng:

  1. Trong build.gradle (Project: myProject) thêm vào sau

    classpath 'me.tatarka:gradle-retrolambda:x.x.x' //x.x.x is recent version
  2. Trong build.gradle (Module: myModule) thêm sau

    apply plugin: 'me.tatarka.retrolambda'
    
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

1
Có gì khác với câu trả lời đầu tiên mà đề nghị lambda retro?
Maarten Bodewes

2
@MaartenBodewes Có vẻ như đã chỉ ra rằng nó đã trở nên đơn giản hơn nhiều so với câu trả lời được chấp nhận. Tham khảo Medium.com/android-news/ từ
TechSpellBound

Đừng sử dụng nó. Plugin bị lỗi
Akshay Mukadam 5/2/2016

11

CẬP NHẬT 2020/01/17

Android Studio 4.0 bao gồm hỗ trợ sử dụng một số API ngôn ngữ Java 8, bằng cách sử dụng kỹ thuật được gọi là desugaring, mà không yêu cầu cấp API tối thiểu cho ứng dụng của bạn:
https://developer.android.com/studio/preview/features#j8-desugar

Bộ API sau đây được hỗ trợ trong phiên bản này:

  • Luồng tuần tự ( java.util.stream)
  • Một tập hợp con của java.time
  • java.util.function
  • Bổ sung gần đây để java.util.{Map,Collection,Comparator}
  • Optionals ( java.util.Optional, java.util.OptionalIntjava.util.OptionalDouble) và một số lớp nhân vật mới khác hữu ích với các API trên
  • Một số bổ sung java.util.concurrent.atomic(phương pháp mới về AtomicInteger, AtomicLongAtomicReference)
  • ConcurrentHashMap (có sửa lỗi cho Android 5.0)

Để hỗ trợ các API ngôn ngữ này, D8 biên dịch một tệp DEX thư viện riêng có chứa việc triển khai các API bị thiếu và đưa nó vào ứng dụng của bạn. Quá trình giải mã viết lại mã ứng dụng của bạn để sử dụng thư viện này khi chạy.

Để bật hỗ trợ cho các API ngôn ngữ này, hãy bao gồm các mục sau trong build.gradletệp của mô-đun của bạn :

android {
  defaultConfig {
    // Required when setting minSdkVersion to 20 or lower
    multiDexEnabled true
  }

  compileOptions {
    // Flag to enable support for the new language APIs
    coreLibraryDesugaringEnabled true
    // Sets Java compatibility to Java 8
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}

dependencies {
  coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.0.4'
}

BÀI VIẾT GỐC TỪ 2017

Android Studio 3.0 bắt đầu cung cấp hỗ trợ tích hợp cho một số tính năng ngôn ngữ Java 8, đó là:

  • Biểu thức Lambda
  • Tài liệu tham khảo phương pháp
  • Gõ chú thích (thông tin có sẵn tại thời gian biên dịch, nhưng không có trong thời gian chạy)
  • Lặp lại chú thích
  • Phương thức giao diện mặc định và tĩnh

Cũng bắt đầu từ API cấp 24, API Java 8 sau đây có sẵn:

  • java.util.stream
  • java.util.function
  • java.lang.FunctionalInterface
  • java.lang.annotation.Repeatable
  • java.lang.reflect.AnnotatedElement.getAnnotationsByType(Class)
  • java.lang.reflect.Method.isDefault()

Bên cạnh đó, sự try-with-resourceshỗ trợ đã được mở rộng cho tất cả các cấp API của Android.

Nhiều tính năng Java 8 được hứa hẹn sẽ được thêm vào trong tương lai.

Để bắt đầu sử dụng các tính năng ngôn ngữ Java 8 được hỗ trợ, hãy cập nhật plugin Android lên 3.0.0-alpha1 (hoặc cao hơn) và thêm phần sau vào tệp build.gradle của mô-đun của bạn:

android {
  ...
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}

Để biết thêm chi tiết, hãy truy cập:
https://developer.android.com/studio/write/java8-support.html


Những gì tôi không nhận được là, studio android phải làm gì với hỗ trợ java8 (trước đây không có intellij)?! Điều đó có nghĩa là nếu tôi sử dụng gradle trên thiết bị đầu cuối để biên dịch dự án thì nó sẽ không biên dịch?!
Caesarferreira

1
@cesarferreira Bạn cần cập nhật plugin Android lên phiên bản mới nhất (hiện tại 2.4.0-alpha6). Vui lòng kiểm tra khối trích dẫn trong câu trả lời.
Thần tượng

Thêm nó vào mô-đun (không phải ứng dụng) Tôi đang làm việc là một bước ngoặt. Thêm vào mô-đun ứng dụng đã không giúp đỡ.
Surekha

6

Cách dễ dàng

Bạn có thể kích hoạt hỗ trợ java 1.8 cho dự án Android.

  • Cấu trúc dự án mở

    • Hoặc bằng cách nhấn Ctrl + Shift + Alt + S

    • Hoặc là File > Project Structure

  • Cập nhật khả năng tương thích nguồntương thích mục tiêu thành 1.8 trong hộp thoại Cấu trúc dự án như được hiển thị (nhấp vào Tệp> Cấu trúc dự án).

hình ảnh

Hoặc bạn có thể sử dụng gradle

 android {
   compileOptions {
       sourceCompatibility JavaVersion.VERSION_1_8
       targetCompatibility JavaVersion.VERSION_1_8
   }

Dự án đồng bộ. Và đó là nó!

Lưu ý: Có thể bật hỗ trợ Java 1.8 cho Android Studio 3.0.0 trở lên. Xem Tài liệu để đọc thêm.


Giải pháp này hiệu quả với tôi: stackoverflow.com/a/55467237/4698320
Däñish Shärmà

5

Khi tôi hỏi câu hỏi này gần 2 năm trước, câu trả lời thực sự là chính thức, không, nhưng như câu trả lời của ekcr1, bạn có thể sử dụng một trong những tính năng được mong đợi nhất (lambdas) nếu bạn sử dụng retrolamba. Vào thời điểm đó tôi vẫn đang sử dụng nhật thực, vì Android Studio đang ở chế độ xem trước chế độ xem trước, vì vậy tôi chưa bao giờ theo đuổi con đường này.

Hôm nay, tôi nghĩ rằng câu trả lời chính thức của người Viking vẫn chưa có, và trong khi retrolamba dường như vẫn là một cách tốt để đi, có một lựa chọn khác cho những người sẵn sàng đi xuống một con đường không chính thức có thể đi, đó là Kotlin.

Hôm nay, Kotlin đạt 1.0.0. Đối với những người không quen thuộc với Kotlin, có thể tìm thêm thông tin tại trang web của họ tại đây:

https://kotlinlang.org

hoặc xem video utube này về một cuộc nói chuyện được đưa ra bởi Jake Wharton

https://www.youtube.com/watch?v=A2LukgT2mKc


4

Tin mới nhất:

Google thông báo rằng với Android N và Android Studio 2.1+, nền tảng sẽ hỗ trợ Java 8. Phiên bản studio 2.1 ổn định cũng được phát hành.

Cuối cùng, chúng ta có thể sử dụng biểu thức lambda. Không có thêm bộ lọc danh sách trong vòng lặp. Horeeey.


4

Thêm cấu hình build.gradle và đồng bộ hóa lớp này:

android {
    ...
    defaultConfig {
        ...
        jackOptions {
            enabled true
        }
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
        // or
        //sourceCompatibility 1.8
        //targetCompatibility 1.8
    }
}

1
Đây là cách chính xác để thêm hỗ trợ cho Java 8 cho các dự án Android. Nhược điểm là chạy ngay lập tức không chạy khi kích hoạt jack.
Irika Negru

Đừng hỗ trợ đầy đủ.
Ahmad Aghazadeh

2

Google vừa thông báo rằng Java 8 sẽ được Android hỗ trợ và chuỗi công cụ Jack sẽ không dùng nữa:

Chúng tôi đã quyết định thêm hỗ trợ cho các tính năng ngôn ngữ Java 8 trực tiếp vào bộ công cụ javac và dx hiện tại và không dùng công cụ Jack. Với hướng mới này, các công cụ và plugin hiện có phụ thuộc vào định dạng tệp lớp Java sẽ tiếp tục hoạt động. Tiến về phía trước, các tính năng ngôn ngữ Java 8 sẽ được hỗ trợ bởi hệ thống xây dựng Android. Chúng tôi đang hướng tới việc ra mắt điều này như một phần của Android Studio trong vài tuần tới và chúng tôi muốn chia sẻ quyết định này sớm với bạn.

Thông tin thêm tại đây: https://android-developers.googleblog.com/2017/03/future-of-java-8-lingu-feature.html


2

Đúng. Chúng tôi sẽ sử dụng Java 8 sớm!

Chúng tôi đã quyết định thêm hỗ trợ cho các tính năng ngôn ngữ Java 8 trực tiếp vào bộ công cụ javac và dx hiện tại và không dùng công cụ Jack. Với hướng mới này, các công cụ và plugin hiện có phụ thuộc vào định dạng tệp lớp Java sẽ tiếp tục hoạt động. Tiến về phía trước, các tính năng ngôn ngữ Java 8 sẽ được hỗ trợ bởi hệ thống xây dựng Android. Chúng tôi đang hướng tới việc ra mắt điều này như một phần của Android Studio trong vài tuần tới và chúng tôi muốn chia sẻ quyết định này sớm với bạn.

https://android-developers.googleblog.com/2017/03/future-of-java-8-lingu-feature.html


2

thêm dòng này vào mô đun lvl xây dựng gradel

compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 }


1

Tôi đã viết một câu trả lời tương tự cho một câu hỏi tương tự trên Stack Overflow, nhưng đây là một phần của câu trả lời đó.

Studio Android 2.1:

Phiên bản mới của Android Studio (2.1) có hỗ trợ các tính năng Java 8. Dưới đây là trích xuất từ bài đăng trên blog của Nhà phát triển Android :

... Bản phát hành Android Studio 2.1 bao gồm hỗ trợ cho trình biên dịch Jack mới và hỗ trợ cho Java 8 .

...

Để sử dụng các tính năng ngôn ngữ Java 8 khi phát triển với N Developer Preview, bạn cần sử dụng trình biên dịch Jack. Trình hướng dẫn dự án mới [Tệp → Mới → Dự án] tạo các cấu hình chính xác cho các dự án nhắm mục tiêu đến N.


Trước Android Studio 2.1:

Android chưa hỗ trợ Java 1.8 (nó chỉ hỗ trợ tối đa 1.7), vì vậy bạn không thể sử dụng các tính năng Java 8 như lambdas.

Câu trả lời này cung cấp thêm chi tiết về khả năng tương thích của Android Studio ; nó nói:

Nếu bạn muốn sử dụng lambdas, một trong những tính năng chính của Java 8 trong Android, bạn có thể sử dụng gradle-retrolamba

Nếu bạn muốn biết thêm về việc sử dụng gradle-retrolambda, câu trả lời này cung cấp rất nhiều chi tiết về việc đó .


Xin chào Farbod! Tôi đang sử dụng AndroidStudio 2.2.2 My "SDK Location"(đây là trên Mac FWIW) chỉ nói "/Users/me/Library/Android/sdk" Tôi đang sử dụng Java8 - làm thế nào để sử dụng Java8 ?? Cảm ơn!
Fattie

1

Tôi hình dung rằng tôi sẽ đăng một câu trả lời cập nhật cho những người đang tìm kiếm một cái gì đó hiện tại hơn một chút.

Hiện tại Android và Android Studio đang hỗ trợ một tập hợp con các tính năng Java 8. Theo tài liệu Android có trên trang web của họ , Google cho biết:

Hỗ trợ cho các 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. Vì vậy, nếu bạn muốn sử dụng các tính năng ngôn ngữ Java 8, bạn cần sử dụng Android Studio 2.1 để xây dựng ứng dụng của mình.

Nếu bạn đã cài đặt Android Studio, hãy đảm bảo bạn cập nhật lên phiên bản mới nhất bằng cách nhấp vào Trợ giúp> Kiểm tra cập nhật (trên Mac, Android Studio> Kiểm tra cập nhật). Nếu bạn chưa cài đặt IDE trên máy trạm, hãy tải xuống Android Studio tại đây.

Các tính năng và API ngôn ngữ Java 8 được hỗ trợ

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 khả dụng khi phát triển ứng dụng nhắm mục tiêu Android 7.0 (API cấp 24):

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

Ngoài ra, các API ngôn ngữ Java 8 sau đây cũng có sẵn:

API phản ánh và ngôn ngữ liên quan:

  • java.lang.FeftalInterface
  • java.lang.annotation. Có thể lặp lại
  • java.lang.reflect.Method.isDefault () và API phản chiếu được liên kết với các chú thích lặp lại, chẳng hạn như AnnotatedEuity.getAnnotationsByType (Class)

API tiện ích:

  • java.util.f ghép
  • java.util.stream

Để sử dụng các tính năng ngôn ngữ Java 8 mới, bạn cũng cần sử dụng chuỗi công cụ Jack . Chuỗi công cụ Android mới này biên dịch các nguồn ngôn ngữ Java thành mã byte DEX có thể đọc được của Android, có định dạng thư viện .jack riêng và cung cấp hầu hết các tính năng của chuỗi công cụ như một phần của một công cụ duy nhất: đóng gói lại, thu nhỏ, che giấu và đa hướng.

Dưới đây là so sánh hai công cụ được sử dụng để xây dựng tệp Android DEX:

Legacy javac toolchain:
    javac (.java  .class)  dx (.class  .dex)
    New Jack toolchain:
    Jack (.java  .jack  .dex)

1

Tôi đã hỏi câu hỏi này hơn 3 năm trước và rõ ràng câu trả lời đã thay đổi qua nhiều năm. Như nhiều người ở trên đã trả lời, đôi khi, câu trả lời đã trở thành . Tôi chưa bao giờ cập nhật câu trả lời được chấp nhận vì đó là câu trả lời đúng vào thời điểm đó. (Tôi không chắc chính sách Stack Overflow là gì)

Tôi chỉ muốn thêm một câu trả lời cho những người vẫn tìm kiếm chủ đề này. Kể từ ngày 17/5/2017 Google cũng đã thông báo rằng Kotlin cũng là ngôn ngữ chính thức để phát triển Android.

Tôi chưa tìm thấy thông cáo báo chí chính thức, nhưng tôi đã xem một số video Google I / O nơi nó được công bố. Đây là một liên kết đến một bài đăng trên blog của nhóm Kotlin trên thông báo.


1

Thêm phần sau đã khắc phục sự cố cho tôi (Android studio 2.3.2):

build.gradle (Dự án)

buildscript {
repositories {
    ...
    jcenter()
}
dependencies {
    ...
    classpath 'me.tatarka:gradle-retrolambda:3.4.0' // DEPENDENCY
    ...
   }
}

build.gradle (Module: ứng dụng)

apply plugin: 'com.android.application'
apply plugin: 'me.tatarka.retrolambda' //PLUGIN

android {
    ...
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    } // SET JAVA VERSION
    ...
}

1

Một tập hợp con của Java 8 hiện được hỗ trợ trên Android Studio. Chỉ cần thực hiện các điều chỉnh Tương thích Nguồn và Mục tiêu từ cửa sổ bên dưới:

Tệp -> Cấu trúc dự án

Cửa sổ điều chỉnh

Thông tin thêm được đưa ra trong liên kết dưới đây.

https://developer.android.com/studio/write/java8-support.html


1

CẬP NHẬT 2019/10/28

Android Studio 4.0 giải quyết vấn đề này .

Trình biên dịch D8 vá một backport của API gốc Java 8 vào APK của bạn tại thời điểm biên dịch và ứng dụng của bạn sẽ sử dụng mã đó, thay vì API gốc, khi chạy. Quá trình này được gọi là desugaring .


0

Tất cả các giải pháp trên dường như không hoạt động trong năm 2019 với Android Studio 3.4+ mới nhất .

Tôi đã tìm ra một giải pháp hoàn hảo và cập nhật để di chuyển hoặc nâng cấp Dự án Android của bạn lên Java 8 .

Giải pháp: Nhấp vào Tệp -> Cấu trúc dự án -> Mô-đun -> tab Thuộc tính .

Thay đổi Khả năng tương thích nguồnTương thích mục tiêu thành 1.8 (Java 8)

nhập mô tả hình ảnh ở đây



-1

Cách dễ nhất để thêm hỗ trợ Java 8

 compileOptions {
    targetCompatibility = '1.8'
    sourceCompatibility = '1.8'
 }

Chỉ cần thêm nó trong tập tin build.gradle của bạn.


câu trả lời trùng lặp, chất lượng thấp
JanPl
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.