Como resolver NoClassDefFoundError: Falha na resolução de: Landroid / view / View $ OnUnhandledKeyEventListener;

95

Eu atualizei meu Android Studio para

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

Eu crio um novo projeto usando o modelo de atividade vazia

Sync Gradle
Clean
Build
Run

meu logcat do aplicativo mostra esta exceção na inicialização

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

Não fiz alterações no aplicativo de modelo gerado pelo Android Studio.

Por que o aplicativo de modelo de geração não inicia de forma limpa?

Tentei migrar para o androidX, mas o problema continua exatamente o mesmo.

Por que o Android Studio não consegue gerar um aplicativo de modelo "limpo"?

Meus arquivos do Gradle são semelhantes a este: -

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
fonte

Respostas:

48

Às vezes, após uma atualização, você precisa invalidar e limpar o cache.

insira a descrição da imagem aqui

Existem alguns problemas conhecidos no 3.2, portanto, certifique-se de não usar as ferramentas Kotlin org.jetbrains.kotlin: kotlin-gradle-plugin: 1.2.70

pois isso também causa problemas de congelamento. Se isso não funcionar, remova as linhas do plugin do Google e as bibliotecas de suporte, sincronize, adicione-os novamente e sincronize. Às vezes, os diretórios de cache simplesmente saem do controle.

Sam
fonte
2
incrível, que bom que funcionou para você. Também salvou minha bunda várias vezes;)
Sam
9
Nada ajuda. Eu tento com Invalidate Caches / Restart. Com e sem Kotlin. Tenho o Android Studio 3.2.1.
Bobert
Olá @Bobert, não foi você que fez a pergunta, então não tenho ideia de qual é a sua situação. Poste uma pergunta com seu cenário, versões, conjuntos de ferramentas e erro e terei prazer em tentar ajudá-lo se encontrar o problema.
Sam,
1
Olá @ Sam, é exatamente o mesmo problema. Eu crio um novo projeto e começo este novo projeto e me torno as mesmas informações do LogCat. Mas eu uso o Android Studio 3.2.1 Build # AI-181.5540.7.32.5056338, criado em 9 de outubro 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
Eu encontrei o problema em issuetracker.google.com/117685087, ele comete o mesmo erro
Bobert
12

se você estiver usando o android x, tente isso (adicione este segmento de código ao arquivo Gradle de nível de aplicativo)

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

se você não estiver usando o android x, experimente 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
fonte
Obrigado, mas não funcionou para mim :-( - Android Studio 3.5.3, Build # AI-191.8026.42.35.6010548, construído em 15 de novembro de 2019, JRE: 1.8.0_202-release-1483-b49-5587405 amd64 , JVM: OpenJDK 64-Bit Server VM da JetBrains sro, Linux 4.15.0-74-generic
legolas108
1
@ legolas108, antes de construir o aplicativo, invalide Caches / Reinicie o IDE, limpe o projeto e reconstrua o APK do aplicativo. Funcionou para mim
ishara weerasekara
1
que ajudou, um novo projeto de Atividade Vazia sem modificações agora começa sem este erro após seguir suas instruções adicionais. Muito obrigado!
legolas108 01 de
Estou em Kotlin e meu targetSdk: 29e não funciona para mim.
Anbuselvan Rocky
@Anbuselvan Rocky Acho que este artigo será útil para você discuss.kotlinlang.org/t/kotlin-dependencies-in-gradle-projects/…
ishara weerasekara
10

Tenho um problema semelhante com dependências do 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;

Resolvido adicionando configurações nos arquivos Gradle conforme abaixo

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
fonte
Trabalhou em AS 4.1. Para outros novatos, adicionei isso ao build.gradle do módulo (aquele dentro da pasta do app).
Lodovik 01 de
Isso realmente funciona, você pode explicar por quê?
Amos
1
Eu tenho uma solução melhor em vez de adicionar este snippet de código, consulte stackoverflow.com/a/65217631/3260008
Amos
6

Eu resolvi um problema semelhante

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"

Adicionando dependência em build.gradle (nível de aplicativo)

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

Resolvi um problema semelhante colando isso na parte inferior do meu arquivo 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

Rag King
fonte
15
Você pode explicar o que isso está fazendo?
Dan Loewenherz de
1
está forçando as bibliotecas de dependência androidx / appcompat a atingir um nível de tempo de execução SDK específico.
ShellDude
o que não funciona, BTW. veja aqui: stackoverflow.com/questions/51782548/…
ShellDude
3

Este erro pode ser um engodo. No meu caso, o erro real acabou sendo um Resources$NotFoundExceptionlugar no stacktrace. Quando substituí um <androidx.appcompat.widget.AppCompatImageViewpor ImageView, obtive um erro legível que foi fácil de resolver.

Cristan
fonte
3

Meu problema estava faltando a importação androidx no build.gradle para um dos elementos de visualização no layout que estava sendo aumentado. Adicionar implementation 'androidx.drawerlayout:drawerlayout:1.0.0 'corrigiu meu problema específico. Imagino que haja alguma visualização do androidx que está dentro do layout da sua atividade principal que não é importada. Todos os diferentes pacotes e versões estão em https://maven.google.com/web/index.html , simplesmente encontre o item que está faltando e adicione-o às dependências no build.gradle do seu módulo.

Rjferguson
fonte
3

Adicionar para gradleresolverá o problema, funciona para mim:

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

Observe que 1.2.0 ainda não funciona

Amos
fonte
1

Lutei com a mesma exceção, mas apenas ao testar meu aplicativo em um dispositivo real (Samsung Galaxy S9). O mesmo aplicativo estava funcionando bem em dispositivos virtuais. Como a mudança de configuração do build.gradle não resolveu, resolvi o problema movendo minha atividade principal de AppCompatActivity para Activity. Parece que estou rebaixando sua atividade, mas se você não estiver usando recursos de atividade avançados - veja isto ( https://developer.android.com/reference/androidx/appcompat/app/AppCompatActivity ) - não é um problema real.

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

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