Cómo resolver NoClassDefFoundError: Resolución fallida de: Landroid / view / View $ OnUnhandledKeyEventListener;

92

He actualizado mi Android Studio a

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

Creo un nuevo proyecto usando la plantilla Actividad vacía

Sync Gradle
Clean
Build
Run

mi aplicación logcat muestra esta excepción al inicio

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

No he realizado cambios en la aplicación de plantilla generada por Android Studio.

¿Por qué la aplicación de generación de plantillas no se inicia limpiamente?

Intenté migrar a androidX, sin embargo, el problema sigue siendo exactamente el mismo.

¿Por qué Android Studio no puede generar una aplicación de plantilla "limpia"?

Mis archivos gradle se parecen a esto: -

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'
}
Héctor
fuente

Respuestas:

45

A veces, después de una actualización, es necesario invalidar y borrar el caché.

ingrese la descripción de la imagen aquí

Hay algunos problemas conocidos en 3.2, así que también asegúrese de no estar en las herramientas de Kotlin org.jetbrains.kotlin: kotlin-gradle-plugin: 1.2.70

ya que eso también causa problemas de congelación. Si eso no funciona, elimine las líneas de complementos de Google y las bibliotecas de soporte, sincronícelas y agréguelas nuevamente y sincronícelas. A veces, los directorios de la caché simplemente se salen de control.

Sam
fuente
2
impresionante, me alegro de que te haya funcionado. También me salvó el trasero varias veces;)
Sam
8
Nada ayuda. Lo intento con Invalidate Caches / Restart. Con y sin Kotlin. Tengo Android Studio 3.2.1.
Bobert
Hola @Bobert, no eres tú quien hizo la pregunta, así que no tengo idea de cuál es tu situación. Publique una pregunta con su escenario, versiones, conjuntos de herramientas y error, y me complace intentar ayudar si veo el problema.
Sam
1
Hola @Sam, es exactamente el mismo problema. Creo un nuevo proyecto y comienzo este nuevo proyecto y me convierto en la misma información de LogCat. Pero yo uso Android Studio 3.2.1 Build # AI-181.5540.7.32.5056338, construido el 9 de octubre de 2018 JRE: 1.8.0_152-release-1136-b06 amd64 JVM: OpenJDK 64-Bit Server VM por JetBrains sro Windows 7 6.1
Bobert
2
Encontré el problema de mi parte issuetracker.google.com/117685087 y hace el mismo error
Bobert
12

si está utilizando Android x, pruebe esto (agregue este segmento de código al archivo Gradle de nivel de aplicación)

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

Si no está utilizando Android X, pruebe este segmento de código.

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
fuente
Gracias, pero no funcionó para mí :-( - Android Studio 3.5.3, compilación # AI-191.8026.42.35.6010548, construido el 15 de noviembre de 2019, JRE: 1.8.0_202-release-1483-b49-5587405 amd64 , JVM: VM de servidor OpenJDK de 64 bits por JetBrains sro, Linux 4.15.0-74-generic
legolas108
1
@ legolas108, antes de crear la aplicación, invalide Caches / Reinicie IDE, luego limpie el proyecto y reconstruya el APK de la aplicación. Funcionó para mí.
ishara weerasekara
1
Eso ayudó, un nuevo proyecto de Actividad vacía sin modificaciones ahora comienza sin este error después de seguir sus instrucciones adicionales. ¡Muchas gracias!
legolas108
Estoy en Kotlin y mi targetSdk: 29y no funciona para mí.
Anbuselvan Rocky
@Anbuselvan Rocky Creo que este artículo será útil para discutir.kotlinlang.org/t/kotlin-dependencies-in-gradle-projects/…
ishara weerasekara
8

Tengo un problema similar con las dependencias de androidx como

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;

Resuelto agregando configuraciones en archivos Gradle como se muestra a continuación

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
fuente
también funcionó para mí Android Studio 4.0.1
AllanRibas
Trabajó en AS 4.1. Para otros novatos, he agregado esto a build.gradle del módulo (el que está dentro de la carpeta de la aplicación).
Lodovik
3

Resolví un problema similar pegando esto en la parte inferior de mi archivo build.gradle

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

Rey del trapo
fuente
15
¿Puedes explicar qué está haciendo esto?
Dan Loewenherz
1
está obligando a las bibliotecas de dependencia de androidx / appcompat a apuntar a un nivel de tiempo de ejecución sdk específico.
ShellDude
que no funciona, por cierto. ver aquí: stackoverflow.com/questions/51782548/…
ShellDude
3

Este error puede ser un señuelo. En mi caso, el error real resultó estar en Resources$NotFoundExceptionalgún lugar del stacktrace. Cuando reemplacé un <androidx.appcompat.widget.AppCompatImageViewcon ImageViewobtuve un error legible que luego fue fácil de resolver.

Cristan
fuente
3

Mi problema era que faltaba la importación de androidx en build.gradle para uno de los elementos de vista en el diseño que se estaba inflando. La adición implementation 'androidx.drawerlayout:drawerlayout:1.0.0 'solucionó mi problema específico. Me imagino que hay una vista de androidx que está dentro del diseño de su actividad principal que no se importa. Todos los diferentes paquetes y versiones se encuentran en https://maven.google.com/web/index.html , simplemente busque el elemento que le falta y agréguelo a las dependencias en build.gradle de su módulo.

rjferguson
fuente
2

Resolví un problema similar

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"

Agregar dependencia en build.gradle (nivel de aplicación)

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

Luché con la misma excepción, pero solo al probar mi aplicación en un dispositivo real (Samsung Galaxy S9). La misma aplicación funcionaba bien en dispositivos virtuales. Como el cambio de configuración de build.gradle no se resolvió, solucioné el problema moviendo mi actividad principal de AppCompatActivity a Activity. Parece que estás rebajando tu actividad, pero si no estás usando funciones de actividad avanzadas, mira esto ( https://developer.android.com/reference/androidx/appcompat/app/AppCompatActivity ), no es un problema real.

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

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