So lösen Sie NoClassDefFoundError: Fehlerhafte Auflösung von: Landroid / view / View $ OnUnhandledKeyEventListener;

94

Ich habe mein Android Studio auf aktualisiert

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

Ich erstelle ein neues Projekt mit der Vorlage "Leere Aktivität"

Sync Gradle
Clean
Build
Run

Mein Anwendungsprotokoll zeigt diese Ausnahme beim Start an

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]]

Ich habe keine Änderungen an der von Android Studio generierten Vorlagen-App vorgenommen.

Warum startet die App zum Generieren von Vorlagen nicht sauber?

Ich habe versucht, auf AndroidX zu migrieren, aber das Problem bleibt genau das gleiche.

Warum kann Android Studio keine "saubere" Vorlagenanwendung generieren?

Meine Gradle-Dateien sehen folgendermaßen aus:

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'
}
Tyrannisieren
quelle

Antworten:

47

Manchmal müssen Sie nach einem Upgrade den Cache ungültig machen und leeren.

Geben Sie hier die Bildbeschreibung ein

In Version 3.2 sind einige Probleme bekannt. Stellen Sie daher auch sicher, dass Sie sich nicht in den Kotlin-Tools befinden. Org.jetbrains.kotlin: kotlin-gradle-plugin: 1.2.70

da dies auch Einfrierprobleme verursacht. Wenn dies nicht funktioniert, entfernen Sie Ihre Google-Plugin-Zeilen und Support-Bibliotheken, synchronisieren Sie sie, fügen Sie sie erneut hinzu und synchronisieren Sie sie. Manchmal geraten die Cache-Verzeichnisse einfach aus dem Ruder.

Sam
quelle
2
Super, ich bin froh, dass es für dich funktioniert hat. Es hat meinen Hintern auch mehrmals gerettet;)
Sam
9
Nichts hilft. Ich versuche mit Invalidate Caches / Restart. Mit und ohne Kotlin. Ich habe Android Studio 3.2.1.
Bobert
Hallo @Bobert, du bist nicht derjenige, der die Frage gestellt hat, also habe ich keine Ahnung, wie deine Situation ist. Bitte stellen Sie eine Frage mit Ihrem Szenario, Ihren Versionen, Toolsets und Fehlern. Ich versuche gerne zu helfen, wenn ich das Problem sehe.
Sam
1
Hallo @ Sam, es ist genau das gleiche Problem. Ich erstelle ein neues Projekt und starte dieses neue Projekt und werde die gleichen LogCat-Infos. Aber ich benutze Android Studio 3.2.1 Build # AI-181.5540.7.32.5056338, erstellt am 9. Oktober 2018 JRE: 1.8.0_152-release-1136-b06 amd64 JVM: OpenJDK 64-Bit-Server-VM von JetBrains sro Windows 7 6.1
Bobert
2
Ich habe das Problem von mir issuetracker.google.com/117685087 gefunden, es macht den gleichen Fehler
Bobert
12

Wenn Sie Android X verwenden, versuchen Sie dies (fügen Sie dieses Codesegment zur Gradle-Datei auf App-Ebene hinzu)

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

Wenn Sie Android X nicht verwenden, versuchen Sie dieses Codesegment.

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
quelle
Danke, aber es hat bei mir nicht funktioniert :-( - Android Studio 3.5.3, Build # AI-191.8026.42.35.6010548, erstellt am 15. November 2019, JRE: 1.8.0_202-release-1483-b49-5587405 amd64 , JVM: OpenJDK 64-Bit-Server-VM von JetBrains sro, Linux 4.15.0-74-generic
legolas108
1
@ legolas108, bevor Sie die Anwendung erstellen, Caches ungültig machen / IDE neu starten, dann das Projekt bereinigen und die Anwendungs-APK neu erstellen. Es hat bei mir funktioniert.
ishara weerasekara
1
Das hat geholfen. Ein neues Projekt für leere Aktivitäten ohne Änderungen wird jetzt ohne diesen Fehler gestartet, nachdem Sie Ihre zusätzlichen Anweisungen befolgt haben. Vielen Dank!
legolas108
Ich bin auf Kotlin und meinem targetSdk: 29und es funktioniert nicht für mich.
Anbuselvan Rocky
@Anbuselvan Rocky Ich denke, dieser Artikel wird für Sie hilfreich sein. Diskussion.kotlinlang.org/t/kotlin-dependencies-in-gradle-projects/…
ishara weerasekara
9

Habe ein ähnliches Problem mit Androidx-Abhängigkeiten wie

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;

Behebung durch Hinzufügen von Konfigurationen in Gradle-Dateien wie unten

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.
quelle
es hat auch bei mir funktioniert Android Studio 4.0.1
AllanRibas
Arbeitete an AS 4.1. Für andere Noobs habe ich dies zu build.gradle des Moduls hinzugefügt (das im App-Ordner).
Lodovik
Das funktioniert wirklich, können Sie erklären, warum?
Amos
5

Ich habe ein ähnliches Problem gelöst

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"

Hinzufügen einer Abhängigkeit in build.gradle (App-Ebene)

implementation 'androidx.core:core:1.5.0-alpha04'
Shomu
quelle
3

Ich habe ein ähnliches Problem gelöst, indem ich es am Ende meiner build.gradle-Datei eingefügt habe

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
quelle
15
Können Sie erklären, was dies tut?
Dan Loewenherz
1
es zwingt die androidx / appcompat-Abhängigkeitsbibliotheken, auf eine bestimmte SDK-Laufzeitstufe abzuzielen.
ShellDude
was nicht funktioniert, übrigens. siehe hier: stackoverflow.com/questions/51782548/…
ShellDude
3

Dieser Fehler kann ein Köder sein. In meinem Fall stellte sich heraus, dass der eigentliche Fehler Resources$NotFoundExceptionirgendwo im Stacktrace liegt. Als ich ein ersetzt <androidx.appcompat.widget.AppCompatImageViewmit ImageViewbekam ich einen lesbaren Fehler , die dann zu lösen war leicht zu.

Cristan
quelle
3

Mein Problem war der fehlende Androidx-Import in der build.gradle für eines der Ansichtselemente im aufgeblasenen Layout. Das Hinzufügen hat implementation 'androidx.drawerlayout:drawerlayout:1.0.0 'mein spezifisches Problem behoben. Ich stelle mir vor, es gibt eine AndroidX-Ansicht im Layout Ihrer Hauptaktivität, die nicht importiert wird. Alle verschiedenen Pakete und Versionen finden Sie unter https://maven.google.com/web/index.html . Suchen Sie einfach das fehlende Element und fügen Sie es den Abhängigkeiten im build.gradle Ihres Moduls hinzu.

rjferguson
quelle
1

Ich hatte mit der gleichen Ausnahme zu kämpfen, aber nur beim Testen meiner Anwendung auf einem realen Gerät (Samsung Galaxy S9). Dieselbe Anwendung lief auf virtuellen Geräten einwandfrei. Da die Konfigurationsänderung von build.gradle nicht behoben wurde, habe ich das Problem umgangen, indem ich meine Hauptaktivität von AppCompatActivity auf Activity verschoben habe. Ich höre mich an, als würde ich Ihre Aktivität herabstufen, aber wenn Sie keine erweiterten Aktivitätsfunktionen verwenden - siehe dies ( https://developer.android.com/reference/androidx/appcompat/app/AppCompatActivity ) - ist dies kein wirkliches Problem.

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

public class MainActivity /*extends AppCompatActivity*/ extends Activity
Pascal Chardon
quelle
1

Fügen Sie dies hinzu, gradleum das Problem zu beheben. Funktioniert für mich:

implementation 'androidx.appcompat:appcompat:1.3.0-alpha02'

Bitte beachten Sie, dass 1.2.0 sogar nicht funktioniert

Amos
quelle