Như tôi đã thấy trong this post, Java 8
không được hỗ trợ chính thức bởi Android
ngay bây giờ. Vì vậy, tôi quan tâm nếu có thể xây dựng mô-đun Android
với mô-đun Java 7
và Java
(dưới dạng phụ thuộc) với Java 8
.Dự án Android Gradle với Java 8 mô-đun
Ví dụ: Tôi đang cố tạo dự án Gradle
sẽ chứa một mô-đun Android
và một mô-đun Java
làm phụ thuộc. Với compileOptions
thiết lập cho cả hai mô-đun, mọi thứ hoạt động tốt.
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
Nhưng nếu tôi cố gắng thay đổi compileOptions
cho module Java
tôi để
compileJava {
sourceCompatibility = 1.8
targetCompatibility = 1.8
}
tôi nhận được lỗi sau:
Error:Execution failed for task ':fc-android:preDexFreeDebug'.
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.8.0_45\bin\java.exe'' finished with non-zero exit value 1
Vậy câu hỏi, đó là thực sự có thể có Android
mô-đun được biên dịch với 1.7
phiên bản và phụ thuộc Java
mô-đun được biên dịch với 1.8
? Và nếu không, vậy tại sao?
UPDATE:
Retrolamba cho Gradle
(được đề cập bởi @Saeed) là tốt, tuy nhiên họ chỉ có sự ủng hộ của lambdas, vì vậy không truy cập vào Stream API
, DateTime API
và các tính năng khác. Hãy tưởng tượng nếu chúng tôi có *.jar
tệp được tạo với Java 8
(không có mã số Android
). Tôi nghĩ rằng chúng tôi không thể sử dụng tệp *.jar
như phụ thuộc cho mô-đun Android
, bởi vì mã bytecode sẽ không được hỗ trợ bởi ART
hoặc Dalvik
, nhưng chỉ bằng JVM
cho Java 8
.
Retrolamba là tốt, tuy nhiên họ chỉ có hỗ trợ lambdas, do đó không truy cập vào 'API dòng', 'API ngày giờ và các tính năng khác. Hãy tưởng tượng nếu chúng ta có tệp '* .jar' được tạo bằng' Java 8' (không có mã 'Android'). Tôi nghĩ rằng chúng tôi không thể sử dụng tệp '* .jar' như phụ thuộc cho mô-đun 'Android', bởi vì bytecode sẽ không được hỗ trợ bởi' ART' hoặc 'Dalvik', nhưng chỉ bởi' JVM' cho' Java 8 '. Tôi có đúng không, @Saeed? –
vâng, đó là sự thật, thực sự họ sẽ cần phải được xây dựng lại. –