Saya memutakhirkan ke android studio 3.1 dan saya mendapatkan kesalahan berikut:
Default interface methods are only supported starting with Android N (--min-api 24): void android.arch.lifecycle.DefaultLifecycleObserver.onCreate(android.arch.lifecycle.LifecycleOwner)
Message{kind=ERROR, text=Default interface methods are only supported starting with Android N (--min-api 24): void android.arch.lifecycle.DefaultLifecycleObserver.onCreate(android.arch.lifecycle.LifecycleOwner), sources=[Unknown source file], tool name=Optional.of(D8)}
di sini adalah konfigurasi gradle saya:
compileSdkVersion 27
//buildToolsVersion '27.0.3'
defaultConfig {
minSdkVersion 16
targetSdkVersion 27
multiDexEnabled true
//...
}
Seperti yang Anda lihat, saya menargetkan 27 yang sudah di depan 24 yang mengeluh tentang. Apa sebenarnya yang harus saya lakukan untuk memperbaikinya? Jika saya mengubah ke 1.8 java, tidak akankah saya kehilangan banyak pelanggan? Mengapa saya tidak mendapatkan kesalahan ini sebelum saya memutakhirkan android studio?
Saya tidak tahu apakah ini tentang kelas LifecycleObserver saya baru-baru ini dimasukkan, itu di kotlin dan sekarang saya mengubahnya ke java tetapi masih mendapatkan kesalahan yang sama setelah proyek pembersihan:
public class LifeCycleAwareObserver implements LifecycleObserver {
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
public void onAppBackgrounded() {
AnalyticsUtils.trackStartSession(true);
}
@OnLifecycleEvent(Lifecycle.Event.ON_START)
public void onAppForegrounded() {
AnalyticsUtils.trackStartSession(false);
}
}
Bagaimana cara melacak dari mana kesalahan itu berasal sehingga saya bisa memperbaikinya?
inilah dependensi versi saya:
project.ext {
firebase_version = '12.0.0'
supportlib_version = '27.0.2'
room_version = '1.0.0'
espresso_version = '3.0.1'
archLifecycleVersion = '1.1.1'
}
targetSdkVersion
. "Apa sebenarnya yang harus saya lakukan untuk memperbaikinya?" - coba kompilasi dengan kompatibilitas Java 8 diaktifkan . "Jika saya berubah menjadi 1,8 java, apakah saya akan kehilangan banyak pelanggan?" - bukan untuk metode antarmuka standar yang dikeluhkan pesan kesalahan. "mengapa saya tidak mendapatkan kesalahan ini sebelum saya memutakhirkan studio android." - mungkin ketergantungan implisit (misalnya, pengikatan data).Jawaban:
Seperti yang disebutkan CommonsWare, untuk referensi tambahkan ini di dalam
android {...}
penutupan di build.gradle untuk modul aplikasi Anda untuk menyelesaikan masalah:sumber
Anda harus menggunakan Java8 untuk menyelesaikan ini, berdasarkan google Anda dapat melakukan ini dengan (klik File> Struktur Proyek ). dan ubah Kompatibilitas Sumber dan Kompatibilitas Target.
Dan Anda juga dapat mengkonfigurasinya secara langsung di file build.gradle yang sesuai:
sumber
Di tingkat aplikasi, Anda harus menulis kode ini:
Mereka berasal dari JavaVersion.java di Android.
@canerkaseler
sumber
Perbarui build.gradle Anda (Modul: aplikasi) tambahkan
compileOptions
blokir dan tambahkanJavaVersion.VERSION_1_8
sumber
Anda dapat mengatasi masalah ini dengan menurunkan versi Kompatibilitas Sumber dan Kompatibilitas Target Versi Java ke 1.8 di Android Studio Versi 3.4.1 Terbaru
Buka Pengaturan Modul (Struktur Proyek) Winodw dengan mengklik kanan pada folder aplikasi atau Command + Panah Bawah pada Mac
Pergi ke Modul -> Properti
Ubah Kompatibilitas Sumber dan Versi Kompatibilitas Target ke 1.8
Klik Apply atau OK. Itu akan menyelesaikan masalah Anda.
Anda juga dapat menambahkan secara manual di build.gradle (Modul: aplikasi)
sumber
Gunakan kode ini di build.gradle Anda
sumber
Proyek saya menggunakan ButterKnife dan Retro lambda, menetapkan JavaVersion.VERSION_1_8 tidak akan berfungsi. Selalu menyalahkan fungsi antarmuka statis ButterKnife sampai saya menemukan ini bermigrasi dari Retrolambda
TL; DR
Cukup tambahkan JavaVersion.VERSION_1_8 dan sepenuhnya HAPUS retrolambda dari proyek Anda. Ini akan berhasil dibangun.
sumber
Ini juga terjadi pada saya tetapi menggunakan Fitur Dinamis. Saya sudah mengaktifkan kompatibilitas Java 8 di modul aplikasi tetapi saya harus menambahkan garis kompatibilitas ini ke modul Fitur Dinamis dan kemudian berfungsi.
sumber
Mengatur minSdkVersion ke 21 dari 19 memecahkan masalah bagi saya.
sumber