this post da gördüğüm gibi, Java 8
resmi olarak şu anda Android
tarafından desteklenmemektedir. Java 8
ile Android
modülü Java 7
ve Java
modülü (bağımlılık olarak) oluşturmak mümkün olup olmadığını merak ediyorum. Örneğin, bir Android
modülü ve bir Java
modülünü bağımlı olarak içerecek bir Gradle
projesi oluşturmaya çalışıyorum. Örneğin, bir Gradle
projesi oluşturmaya çalışıyorum. Her iki modülden oluşan aşağıdaki compileOptions
ile her şey iyi çalışıyor. Ben aşağıdaki hatayı alıyorumJava 8 modülü ile Gradle Android Projesi
compileJava {
sourceCompatibility = 1.8
targetCompatibility = 1.8
}
benim Java
modülü için compileOptions
değiştirmeye çalışırsanız
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
Ama:
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
Yani soruyu Android
olması aslında mümkündür modülü 1.7
sürümü veile derlenmiş bağımlı Java
modülü ile derlenmiştirmu? Ve değilse, neden olmasın?
GÜNCELLEME: (@Saeed bahsettiği) Gradle
için
Retrolamba ancak bu kadar Stream API
, DateTime API
ve diğer özelliklere erişim değil, lambdas sadece destek var, iyidir. Java 8
(Android
kodlu) ile oluşturulmuş *.jar
dosyanız varsa düşünün. Android
modülüne bağımlı olarak bu *.jar
dosyasını kullanamayacağımızı düşünüyorum, çünkü bayt kodu ART
veya Dalvik
tarafından desteklenmeyecek, ancak Java 8
için yalnızca JVM
tarafından desteklenmeyecektir.
Retrolamba iyidir, ancak sadece lambda desteği vardır, bu nedenle "Stream API", "DateTime API" ve diğer özelliklerine erişemezler. “Java 8” ile oluşturulmuş *. Ben bu tür '' .jar' dosyasını 'Android' modülüne bağımlılık olarak kullanamayacağımızı düşünüyorum, çünkü bytecode 'ART' veya' Dalvik' tarafından desteklenmeyecek, ancak yalnızca Java 8 için' JVM' tarafından desteklenmeyecek. '. Doğru muyum? –
evet doğru, aslında yeniden inşa edilmeleri gerekiyor. –