के साथ ग्रैडल एंड्रॉइड प्रोजेक्ट जैसा कि मैंने this post में देखा है, Java 8
आधिकारिक तौर पर Android
द्वारा समर्थित नहीं है। इसलिए मुझे दिलचस्पी है कि Android
मॉड्यूल Java 7
और Java
मॉड्यूल (निर्भरता के रूप में) Java 8
के साथ बनाना संभव है।जावा 8 मॉड्यूल
उदाहरण के तौर पर, मैं Gradle
प्रोजेक्ट बनाने की कोशिश कर रहा हूं जिसमें एक Android
मॉड्यूल और एक Java
मॉड्यूल निर्भरता के रूप में होगा। निम्नलिखित compileOptions
दोनों मॉड्यूल के लिए सेट के साथ, सबकुछ ठीक काम करता है।
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
लेकिन अगर मैं
compileJava {
sourceCompatibility = 1.8
targetCompatibility = 1.8
}
मैं निम्न त्रुटि प्राप्त करने के लिए मेरी Java
मॉड्यूल के लिए compileOptions
बदलने की कोशिश:
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
तो सवाल, Android
के लिए है कि वास्तव में संभव है 1.7
संस्करण के साथ संकलित मॉड्यूल औरके साथ संकलित Java
मॉड्यूल पर निर्भर? और यदि नहीं, तो क्यों?
अद्यतन:
RetrolambaGradle
(@Saeed ने उल्लेख किया) के लिए अच्छा है, लेकिन वे lambdas के एकमात्र आधार है, इसलिए Stream API
, DateTime API
और अन्य सुविधाओं के लिए पहुँच नहीं। कल्पना करें कि हमारे पास *.jar
फ़ाइल Java 8
(Android
कोड) के साथ बनाई गई है। मुझे लगता है कि हम फ़ाइल का उपयोग Android
मॉड्यूल के लिए निर्भरता के रूप में नहीं कर सकते हैं, क्योंकि यह बाइटकोड ART
या Dalvik
द्वारा समर्थित नहीं होगा, लेकिन केवल JVM
Java 8
के लिए समर्थित नहीं होगा।
रेट्रोलम्बा अच्छा है, हालांकि उनके पास केवल लैम्बडा का समर्थन है, इसलिए 'स्ट्रीम एपीआई', 'डेटटाइम एपीआई' और अन्य सुविधाओं तक पहुंच नहीं है। कल्पना करें कि हमारे पास 'जावा 8' (कोई' एंड्रॉइड' कोड) के साथ निर्मित '* .jar' फ़ाइल है। मुझे लगता है कि हम '' .jar' फ़ाइल को 'एंड्रॉइड' मॉड्यूल के लिए निर्भरता के रूप में उपयोग नहीं कर सकते हैं, क्योंकि यह बाइटकोड 'एआरटी' या 'दलविक' द्वारा समर्थित नहीं होगा, बल्कि 'जावा 8' के लिए केवल 'JVM' द्वारा समर्थित होगा '। क्या मैं सही हूँ, @ सईद? –
हाँ यह सच है, वास्तव में उन्हें पुनर्निर्मित करने की आवश्यकता होगी। –