Bạn thực sự có thể sử dụng gradle-retrolamba
phụ 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 Gradle
sẽ đượ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 8
và JDK 7
phả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
bin
vào %PATH%
biến của bạn
- Tạo một biến môi trường mới
JAVA_HOME
vớ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_HOME
vớ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_HOME
vớ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 -version
lệnh và xác minh rằng Java 8 đang hoạt động
- Chạy
javac -version
lệ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_HOME
vớ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 Tools
và Andoid SDK Tools
thư mục của bạn , ví dụ D:\adt\sdk\tools
và D:\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, vd
D:\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 Manager
nút nằm trên thanh công cụ
- Chọn
Android SDK Build tools Rev. 19.1
và Android Support Library
chỉ. 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 dots
trong 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 Software
trong Eclipse. Nhập http://doad.eclipse.org/eclipse/updates/4.3-P-builds/ vào Work with
trườ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 Client
bằng Install New Software
công cụ trong Eclipse. Nhập http //: download.eclipse.org/mpc/kepler/ vào Work with
trườ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 Gradle
trong Eclipse Marketplace Client
và 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 CyanogenMod
hì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,
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 PlayStore
trên thiết bị ảo này, gapps
hì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 gapps
hì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:
Ứ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:
gradle_build.cmd:
gradle_post_build.cmd:
gradle_clean.cmd:
- Bỏ chọn
Project -> Build Automatically
tùy chọn menu
- Nhấp chuột phải vào dự án và chọn
Properties -> Builders
và bỏ chọn tất cả các trình tạo mặc định do ADT cung cấp
- Nhấp vào
New
nút trong cùng một cửa sổ và chọn Program
và 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
Refresh
Tab cấu hình Builder mới
Environment
Tab cấu hình Builder mới
Build Options
Tab cấu hình Builder mới
- Tạo trình xây dựng thứ hai được gọi là
Gradle_Post_Build
sử dụng gradle_post_build.cmd
như 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 bin
thư mục.
- Tạo trình xây dựng thứ ba được gọi là
Gradle_Cleaner
sử dụng gradle_clean.cmd
như chương trình của nó. Chỉ Run the builder
thiế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 HelloLambda
dự án
- Nhấp chuột phải vào dự án và chọn
Export
- Chọn
Android -> Generate Gradle Build Files
và 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
gradlew
và gradlew.bat
. Cũng xóa gradle
thư mục
- Chuyển về Eclipse và chọn
Project -> Clean
tùy chọn menu. Điền vào biểu mẫu hiển thị như sau:
Clean Project
Cửa sổ
- Nhấp
OK
và đợ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
setContentView
hàm trong MainActivity
lớp của bạn :
- Thay đổi phần đầu của
build.gradle
tệp cho đến sourceCompatibility
phần như sau:
- Nhấp chuột phải vào dự án và chọn
Properties -> Java Compiler
tù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
No
cử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
Bây giờ Eclipse sẽ có thể nhận ra R.java
và buildConfig.java
các tệp và nó sẽ không hiển thị bất kỳ red dots
lỗ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 Configuration
cho 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
Bạn có thể quan sát trong LogCat
cửa sổ rằng đoạn mã với biểu thức lambda đơn giản hoạt động đúng
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