Cara mengatasi NoClassDefFoundError: Resolusi gagal: Landroid / view / View $ OnUnhandledKeyEventListener;

93

Saya telah mengupgrade Android Studio saya ke

Android Studio 3.2
Build #AI-181.5540.7.32.5014246, built on September 17, 2018
JRE: 1.8.0_152-release-1136-b06 x86_64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Mac OS X 10.11.6

Saya membuat Proyek baru menggunakan template Empty Activity

Sync Gradle
Clean
Build
Run

logcat aplikasi saya menunjukkan pengecualian ini saat startup

2018-09-27 13:51:41.116 22090-22090/? I/zygote64: Rejecting re-init on previously-failed class java.lang.Class<android.support.v4.view.ViewCompat$OnUnhandledKeyEventListenerWrapper>: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/view/View$OnUnhandledKeyEventListener;
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at void android.support.v4.view.ViewCompat.setBackground(android.view.View, android.graphics.drawable.Drawable) (ViewCompat.java:2341)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at void android.support.v7.widget.ActionBarContainer.<init>(android.content.Context, android.util.AttributeSet) (ActionBarContainer.java:62)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at java.lang.Object java.lang.reflect.Constructor.newInstance0(java.lang.Object[]) (Constructor.java:-2)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at java.lang.Object java.lang.reflect.Constructor.newInstance(java.lang.Object[]) (Constructor.java:334)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at android.view.View android.view.LayoutInflater.createView(java.lang.String, java.lang.String, android.util.AttributeSet) (LayoutInflater.java:647)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at android.view.View android.view.LayoutInflater.createViewFromTag(android.view.View, java.lang.String, android.content.Context, android.util.AttributeSet, boolean) (LayoutInflater.java:790)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at android.view.View android.view.LayoutInflater.createViewFromTag(android.view.View, java.lang.String, android.content.Context, android.util.AttributeSet) (LayoutInflater.java:730)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at void android.view.LayoutInflater.rInflate(org.xmlpull.v1.XmlPullParser, android.view.View, android.content.Context, android.util.AttributeSet, boolean) (LayoutInflater.java:863)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at void android.view.LayoutInflater.rInflateChildren(org.xmlpull.v1.XmlPullParser, android.view.View, android.util.AttributeSet, boolean) (LayoutInflater.java:824)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at android.view.View android.view.LayoutInflater.inflate(org.xmlpull.v1.XmlPullParser, android.view.ViewGroup, boolean) (LayoutInflater.java:515)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at android.view.View android.view.LayoutInflater.inflate(int, android.view.ViewGroup, boolean) (LayoutInflater.java:423)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at android.view.View android.view.LayoutInflater.inflate(int, android.view.ViewGroup) (LayoutInflater.java:374)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at android.view.ViewGroup android.support.v7.app.AppCompatDelegateImpl.createSubDecor() (AppCompatDelegateImpl.java:607)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at void android.support.v7.app.AppCompatDelegateImpl.ensureSubDecor() (AppCompatDelegateImpl.java:518)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at void android.support.v7.app.AppCompatDelegateImpl.setContentView(int) (AppCompatDelegateImpl.java:466)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at void android.support.v7.app.AppCompatActivity.setContentView(int) (AppCompatActivity.java:140)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at void com.manacle.secondmanacle.MainActivity.onCreate(android.os.Bundle) (MainActivity.java:11)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at void android.app.Activity.performCreate(android.os.Bundle, android.os.PersistableBundle) (Activity.java:7009)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at void android.app.Activity.performCreate(android.os.Bundle) (Activity.java:7000)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at void android.app.Instrumentation.callActivityOnCreate(android.app.Activity, android.os.Bundle) (Instrumentation.java:1214)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at android.app.Activity android.app.ActivityThread.performLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent) (ActivityThread.java:2731)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at void android.app.ActivityThread.handleLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent, java.lang.String) (ActivityThread.java:2856)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at void android.app.ActivityThread.-wrap11(android.app.ActivityThread, android.app.ActivityThread$ActivityClientRecord, android.content.Intent, java.lang.String) (ActivityThread.java:-1)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at void android.app.ActivityThread$H.handleMessage(android.os.Message) (ActivityThread.java:1589)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:106)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at void android.os.Looper.loop() (Looper.java:164)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6494)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) (Method.java:-2)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at void com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run() (RuntimeInit.java:438)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:807)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64: Caused by: java.lang.ClassNotFoundException: Didn't find class "android.view.View$OnUnhandledKeyEventListener" on path: DexPathList[[zip file "/data/app/com.manacle.secondmanacle-6Ra5peoMwc4HH30iTlEXCg==/base.apk"],nativeLibraryDirectories=[/data/app/com.manacle.secondmanacle-6Ra5peoMwc4HH30iTlEXCg==/lib/arm64, /system/lib64, /vendor/lib64]]

Saya tidak membuat perubahan pada aplikasi template yang dibuat oleh Android Studio.

Mengapa aplikasi template hasil tidak mulai dengan bersih?

Saya mencoba bermigrasi ke androidX, namun masalahnya tetap sama persis.

Mengapa Android Studio tidak dapat membuat aplikasi template yang "bersih"?

File gradle saya terlihat seperti ini: -

buildscript {

    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.2.0'


        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

====

apply plugin: 'com.android.application'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.manacle.secondmanacle"
        minSdkVersion 21
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.appcompat:appcompat:1.0.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.0-alpha2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.1.0-alpha4'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha4'
}
Hector
sumber

Jawaban:

45

Terkadang setelah peningkatan, Anda perlu membatalkan dan menghapus cache.

masukkan deskripsi gambar di sini

Ada beberapa masalah umum di 3.2 jadi pastikan juga Anda tidak menggunakan alat Kotlin org.jetbrains.kotlin: kotlin-gradle-plugin: 1.2.70

karena itu juga menyebabkan masalah pembekuan. Jika tidak berhasil, hapus baris plugin Google dan pustaka dukungan, sinkronkan dan tambahkan lagi dan sinkronkan. Terkadang direktori cache menjadi rusak.

Sam
sumber
2
luar biasa, senang itu berhasil untuk Anda. Ini menyelamatkan pantat saya beberapa kali juga;)
Sam
8
Tidak ada yang membantu. Saya coba dengan Invalidate Caches / Restart. Dengan dan tanpa Kotlin. Saya memiliki Android Studio 3.2.1.
Bobert
Hai @Bobert, bukan Anda yang mengajukan pertanyaan, jadi saya tidak tahu bagaimana situasi Anda. Silakan kirim pertanyaan dengan skenario, versi, kumpulan alat, dan kesalahan Anda dan saya akan dengan senang hati mencoba dan membantu jika saya melihat masalah.
Sam
1
Hai @ Sam, itu masalah yang persis sama. Saya membuat proyek baru dan memulai proyek baru ini dan menjadi info LogCat yang sama. Tetapi saya menggunakan Android Studio 3.2.1 Build # AI-181.5540.7.32.5056338, dibuat pada 9 Oktober 2018 JRE: 1.8.0_152-release-1136-b06 amd64 JVM: OpenJDK 64-Bit Server VM oleh JetBrains sro Windows 7 6.1
Bobert
2
Saya telah menemukan Masalah dari saya Issuetracker.google.com/117685087 itu membuat kesalahan yang sama
Bobert
12

jika Anda menggunakan android x coba ini (tambahkan segmen kode ini ke file Gradle level aplikasi)

configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
    def requested = details.requested
    if (requested.group == "androidx") {
        if (!requested.name.startsWith("multidex")) {
            details.useVersion "${targetSdk}.+"
        }
    }
}}

jika Anda tidak menggunakan android x coba segmen kode ini.

configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
    def requested = details.requested
    if (requested.group == "com.android.support") {
        if (!requested.name.startsWith("multidex")) {
            details.useVersion "26.+"
        }
    }
}}
ishara weerasekara
sumber
Terima kasih, tetapi tidak berhasil untuk saya :-( - Android Studio 3.5.3, Build # AI-191.8026.42.35.6010548, dibuat pada 15 November 2019, JRE: 1.8.0_202-release-1483-b49-5587405 amd64 , JVM: OpenJDK 64-Bit Server VM oleh JetBrains sro, Linux 4.15.0-74-generik
legolas108
1
@ legolas108, sebelum Anda membangun aplikasi, Invalidate Caches / Restart IDE, lalu bersihkan proyek dan buat ulang APK aplikasi. Itu berhasil untuk saya.
ishara weerasekara
1
yang membantu, proyek Empty Activity baru tanpa modifikasi sekarang dimulai tanpa kesalahan ini setelah mengikuti petunjuk tambahan Anda. Terimakasih banyak!
legolas108
Saya menggunakan Kotlin dan saya targetSdk: 29dan itu tidak berhasil untuk saya.
Anbuselvan Rocky
@Anbuselvan Rocky Saya pikir artikel ini akan bermanfaat untuk Anda diskusikan.kotlinlang.org/t/kotlin-dependencies-in-gradle-projects/…
ishara weerasekara
8

Punya masalah serupa dengan dependensi androidx seperti

Rejecting re-init on previously-failed class java.lang.Class<androidx.core.view.ViewCompat$2>: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/view/View$OnUnhandledKeyEventListener;

Diselesaikan dengan menambahkan konfigurasi dalam file Gradle seperti di bawah ini

configurations.all {
    resolutionStrategy.eachDependency { DependencyResolveDetails details ->
        def requested = details.requested
        if (requested.group == "androidx.appcompat") {
            if (!requested.name.startsWith("multidex")) {
                details.useVersion "1.+"
            }
        }
    }
}
Krishna V
sumber
itu bekerja untuk saya juga Android Studio 4.0.1
AllanRibas
Bekerja pada AS 4.1. Untuk sesama noobs, saya telah menambahkan ini ke build.gradle modul (yang ada di dalam folder app).
Lodovik
3

Saya memecahkan masalah serupa dengan menempelkannya di bagian bawah file build.gradle saya

configurations.all {
    resolutionStrategy.eachDependency { DependencyResolveDetails details ->
        def requested = details.requested
        if (requested.group == "com.android.support") {
            if (!requested.name.startsWith("multidex")) {
                details.useVersion "26.+"
            }
        }
    }
}

https://github.com/facebook/flipper/issues/146

Rag King
sumber
15
Bisakah Anda menjelaskan apa yang dilakukannya?
Dan Loewenherz
1
itu memaksa libs dependensi androidx / appcompat untuk menargetkan tingkat runtime sdk tertentu.
ShellDude
yang tidak berhasil, BTW. lihat di sini: stackoverflow.com/questions/51782548/…
ShellDude
3

Kesalahan ini bisa menjadi umpan. Dalam kasus saya, kesalahan sebenarnya ternyata ada di suatu Resources$NotFoundExceptiontempat di stacktrace. Ketika saya mengganti <androidx.appcompat.widget.AppCompatImageViewdengan ImageViewsaya mendapat kesalahan yang dapat dibaca yang kemudian mudah dipecahkan.

Cristan
sumber
3

Masalah saya kehilangan impor androidx di build.gradle untuk salah satu elemen tampilan di tata letak yang sedang digelembungkan. Menambahkan implementation 'androidx.drawerlayout:drawerlayout:1.0.0 'memperbaiki masalah khusus saya. Saya membayangkan ada beberapa tampilan androidx yang ada di dalam tata letak Aktivitas Utama Anda yang tidak diimpor. Semua paket dan versi yang berbeda ada di https://maven.google.com/web/index.html , cukup temukan item yang hilang dan tambahkan ke dependensi di build.gradle modul Anda.

rjferguson.dll
sumber
2

Saya memecahkan masalah serupa

Rejecting re-init on previously-failed class java.lang.Class<androidx.core.view.ViewCompat$2>: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/view/View$OnUnhandledKeyEventListener;
 
Caused by: java.lang.ClassNotFoundException: Didn't find class "android.view.View$OnUnhandledKeyEventListener"

Menambahkan ketergantungan di build.gradle (level aplikasi)

implementation 'androidx.core:core:1.5.0-alpha04'
Shomu
sumber
1

Saya berjuang dengan pengecualian yang sama tetapi hanya saat menguji aplikasi saya di perangkat nyata (Samsung Galaxy S9). Aplikasi yang sama berjalan dengan baik di perangkat virtual. Karena perubahan konfigurasi build.gradle tidak terselesaikan, saya mengatasi masalah tersebut dengan memindahkan aktivitas utama saya dari AppCompatActivity ke Activity. Saya kedengarannya ingin menurunkan aktivitas Anda, tetapi jika Anda tidak menggunakan fitur aktivitas lanjutan - Lihat ini ( https://developer.android.com/reference/androidx/appcompat/app/AppCompatActivity ) - ini bukan masalah nyata.

//import androidx.appcompat.app.AppCompatActivity;
import android.app.Activity;

public class MainActivity /*extends AppCompatActivity*/ extends Activity
Pascal Chardon
sumber